在sql中删除不同的多列

问题描述:

我在Access中创建了SQL Server中的查询。 访问:在sql中删除不同的多列

DELETE DISTINCT * from [TableA] INNER JOIN TableB 
ON [TableA].[Column1]=[TableB].[column1] 
AND [TableA].[Column2]=[TableB].[column2] 

我知道我可以使用

Delete from tableA where ID in (
Select * from from [TableA] INNER JOIN TableB 
ON [TableA].[Column1]=[TableB].[column1] 
AND [TableA].[Column2]=[TableB].[column2]) 

,但我得到一个错误说“只有一个表达式可以在选择列表中指定时不引入子查询用EXISTS”

我的目标是从顶部提到的Access查询中删除不同的记录。

要根据列匹配删除TableA中位于TableB的行。如何做到这一点:

delete from tableA 
    where exists (select 1 
        from tableB 
        where tableA.Column1 = tableB.Column1 and tableA.column2 = tableB.column2 
       ); 

这似乎是你想要做的意图。

+0

此作品完美,但选择1给出了选择查询的每一行。在那里,因为我需要像删除Access查询一样删除唯一的列。你可以点亮一下。 – AllPigsREqual 2014-10-21 21:30:39

+1

@Lewan你认为'独特'对此有何影响?你只想删除在'TableB'中出现的行吗?或者你只想删除'TableB'中多次出现的行?两者都是可以实现的,但不能使用“distinct”关键字。 – TheConstructor 2014-10-21 22:28:02

在子查询u必须选择相应的表是唯一的列ID列u需要

DELETE a 
FROM tableA a 
     JOIN (SELECT DISTINCT Column1 ,column2 
      FROM tableA 
      WHERE EXISTS (SELECT 1 
          FROM tableB 
          WHERE tableA.Column1 = tableB.Column1 
            AND tableA.column2 = tableB.column2)) b 
     ON A.Column1 = B.Column1 
      AND A.column2 = B.column2 
+0

Pradeep我需要删除(DELETE DISTINCT *从[TableA])。任何想法如何编辑你提供的查询相应。我没有表中的ID列 – AllPigsREqual 2014-10-21 21:32:37

+0

@Lewan - 现在试试.. – 2014-10-21 22:16:15

+0

我会让你知道,一旦我使用两个查询来验证记录 – AllPigsREqual 2014-10-22 09:58:04