插入批量语句后删除数据

时间:2016-03-18 17:26:38

标签: sql sybase

我以这种方式插入错误

insert into tab1 ( col1 , col2 , col3) select col1 , col2,col3 from tab2

我获得了7600行效果

我想删除那些7600行,如果我在下面删除它会安全吗?

delete from tab1 where exists  select col1 , col2,col3 from tab2

我想知道我是否会在tab1中丢失数据。这个查询会删除超过7600行吗?如果有共同数据我会在isert中得到唯一约束吗? (是的,两者都有相同的PK)

1 个答案:

答案 0 :(得分:0)

你的DELETE语句甚至不是有效的语法,所以我认为它不会做你想要的。即使你修改了语法,你也没有任何关于tab1tab2的内容。

此外,你还没有提供你的桌面结构,所以从这里开始的任何事情都是我自己的猜测。请阅读:https://stackoverflow.com/help/how-to-ask

尝试跑步:

SELECT COUNT(*)
FROM
    tab1
INNER JOIN tab2 ON tab2.col1 = tab1.col1  -- Is this the primary key? If not then you'll need to join on the whole primary key

如果你获得的数字与INSERT时的数字相同,那么你可以这样做:

DELETE T1
FROM
    Tab1 T1
INNER JOIN Tab2 T2 ON T2.col1 = T1.col1

我会将DELETE放入一个事务中并将其回滚一次以验证计数,然后如果匹配,则运行并提交。