【发布时间】:2015-06-25 12:29:07
【问题描述】:
这个问题是关于一个涉及两个表的DELETE 查询。
我有两个表,分别名为 TableOne 和 TableTwo。
TableTwo 中的列与 TableOne 中的列相同。
CREATE TABLE TABLEONE
(
ColumnOne INT,
ColumnTwo INT
);
CREATE TABLE TABLETWO
(
ColumnOne INT,
ColumnTwo INT
);
但它们与每个表包含的记录数不同。
在ColumnOne 和ColumnTwo 这两个表中都可以包含重复值。
我想根据 ColumnTwo 的值删除 TableTwo 中的记录。
例如,假设TableTwo中有以下记录
ColumnOne ColumnTwo
1 200
1 300
1 400
2 200
2 100
并且TableOne中有以下记录(包含需要删除的记录)
ColumnOne ColumnTwo
1 200
2 200
2 100
根据我的要求,只删除表TableTwo的ColumnTwo中包含200条的记录。
我写了下面的查询来删除TableTwo中的记录
DELETE FROM TableTwo
WHERE ColumnOne IN (SELECT l.ColumnOne
FROM TableOne l
WHERE l.ColumnTwo = TableTwo.ColumnTwo )
此查询同时删除包含 200 和 100 的记录。但我只需要删除包含 200 的记录,因为它与 TableTwo 中所有唯一的 ColumnOne 值相关联。
删除要求:TableTwo - 指定的ColumnTwo 值必须与ColumnOne 的所有唯一值相关联。
有人可以帮我实现吗?
【问题讨论】:
-
如果Table2中的记录包含“3, 200”,是否也会被删除?
标签: sql sql-server delete-row