删除sql中不同的多个列

时间:2014-10-21 21:11:44

标签: sql sql-server ms-access

我在Access中查询我在SQL Server中构建的内容。 访问:

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查询中删除不同的记录。

2 个答案:

答案 0 :(得分:3)

您希望根据列匹配删除TableATableB中的行。这样做怎么样:

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

这似乎是你想要做的目的。

答案 1 :(得分:1)

在子查询中,您必须从相应的表中选择ID列,这是您需要的唯一列

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