如何从表中删除某些列中的数据与另一列中相同的表中的记录?

时间:2017-07-31 10:14:09

标签: sql sql-server sql-server-2008

我有两个表表1 表2 。这两个表都具有相同的结构。我想要做的就是从 Table1 中删除那些记录,其中两列(比如A和B)中的值都与 Table2 中的值相同。

因此,如果 Table2 中有记录,其中A和B的值分别为12和24,那么 Table1 中的记录包含相同的值在那些相应的列中需要删除。

2 个答案:

答案 0 :(得分:1)

使用以下查询:

DELETE FROM Table1
WHERE EXISTS
(
  SELECT 1 FROM Table2 WHERE Table1.A = Table2.A AND Table1.B = Table2.B 
) 

答案 1 :(得分:1)

DELETE FROM table1, table2 WHERE table1.A = table2.A AND table1.B = table2.B

DELETE命令默认删除指定表中的所有记录。 所以我们必须添加一个WHERE子句,告诉查询对特定的列A和B进行操作,这两个列都存在于table1和table2中。 我们可以使用"点符号":

引用特定表的列
table_name.column_name

您可以在此设置任何条件,例如"等于","不等于","小于","是大于"等等...,只要是正确的并且对查询有意义。所以,我们只需添加:

table1.A = table2.A

可以使用逻辑运算符组合多个条件,例如AND,OR和XOR。所以,正如你的问题所说,A列和B列中的值必须相等,所以我们添加另一个条件,用AND运算符连接它们,因为所有这两个条件都必须为真!

相关问题