【发布时间】:2019-10-26 10:51:39
【问题描述】:
我有两个表 t1、t2 和列 name, invoice, total。
我正在使用此查询来获取 T2 中而不是 T1 中的行
select *
from t2
where name = (select source from info)
except
(select * from t1)
它工作正常并返回几行,我想要的是在一个语句中删除这些返回的行。
我已经尝试过了,但它会删除 T2 中的所有行,而不仅仅是从查询中返回的行。
delete from t2
where exists ((select *
from t2
where name = (select source from info)
except
(select * from t1)
))
这是我的数据示例:
T1
T2
返回的数据(存在于 T2 中,而不存在于名称为 C2 的 T1 中)
第三个表信息是获取名称,在这种情况下是 C2。
提前致谢。
【问题讨论】:
-
从两个表中添加一些示例数据,然后说明您要删除哪些行。同时标记适当的数据库名称。
-
您说您有两个表,但您的查询引用了三个。
-
CHECK MY UPDATE,第三张表是获取本地客户端的名字
标签: sql sql-server sql-delete sql-except