当前位置:  开发笔记 > 编程语言 > 正文

如何在MS Access中实现SQL INTERSECT和MINUS操作

如何解决《如何在MSAccess中实现SQLINTERSECT和MINUS操作》经验,为你挑选了2个好方法。

我已经研究过并且没有找到在MS Access中运行INTERSECT和MINUS操作的方法.有任何方式存在



1> LeppyR64..:

INTERSECT是一个内部联接.MINUS是一个外连接,您只能选择另一个表中不存在的记录.


相交

select distinct
  a.*
from
  a
  inner join b on a.id = b.id

减去

select distinct
  a.*
from
  a
  left outer join b on a.id = b.id
where
  b.id is null

如果您编辑原始问题并发布一些示例数据,则可以给出一个示例.

编辑:忘记添加到查询的不同.



2> Dave Markle..:

INTERSECT不是内部联合.他们是不同的.如果INTERSECT不能,INNER JOIN会给你重复的行.你可以得到相同的结果:

SELECT DISTINCT a.*
FROM a
INNER JOIN b
   on a.PK = b.PK

请注意,PK必须是主键列.如果表上没有PK(坏!),你必须这样写:

SELECT DISTINCT a.*
FROM a
INNER JOIN b
   ON  a.Col1 = b.Col1
   AND a.Col2 = b.Col2
   AND a.Col3 = b.Col3 ...

使用MINUS,您可以执行相同的操作,但使用LEFT JOIN,并且WHERE条件在表b的不可为空的列(最好是主键)之一上检查null.

SELECT DISTINCT a.*
FROM a
LEFT JOIN b
   on a.PK = b.PK
WHERE b.PK IS NULL

应该这样做.

推荐阅读
保佑欣疼你的芯疼
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有