我以这种方式插入错误
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)
答案 0 :(得分:0)
你的DELETE
语句甚至不是有效的语法,所以我认为它不会做你想要的。即使你修改了语法,你也没有任何关于tab1
和tab2
的内容。
此外,你还没有提供你的桌面结构,所以从这里开始的任何事情都是我自己的猜测。请阅读: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
放入一个事务中并将其回滚一次以验证计数,然后如果匹配,则运行并提交。