我在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查询中删除不同的记录。
答案 0 :(得分:3)
您希望根据列匹配删除TableA
中TableB
中的行。这样做怎么样:
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