Sql 比较两个表的访问查询
Access中有两个表,表A和表B: 表MasterLockInNew:Sql 比较两个表的访问查询,sql,ms-access,nested-queries,Sql,Ms Access,Nested Queries,Access中有两个表,表A和表B: 表MasterLockInNew: +----+-------+----------+ | ID | Value | Date | +----+-------+----------+ | 1 | 123 | 12/02/13 | | 2 | 1231 | 11/02/13 | | 4 | 1265 | 16/02/13 | +----+-------+----------+ 表1数据: +----+-------+----------
+----+-------+----------+
| ID | Value | Date |
+----+-------+----------+
| 1 | 123 | 12/02/13 |
| 2 | 1231 | 11/02/13 |
| 4 | 1265 | 16/02/13 |
+----+-------+----------+
表1数据:
+----+-------+----------+---+
| ID | Value | Date |Type
+----+-------+----------+---+
| 1 | 123 | 12/02/13 | x |
| 2 | 1231 | 11/02/13 | x |
| 3 | 1238 | 10/02/13 | y |
| 4 | 1265 | 16/02/13 | a |
| 7 | 7649 | 18/02/13 | z |
+----+-------+----------+---+
我所需要的是表B中未包含在A中的ID的行
SELECT Distinct InitialPolData.*
FROM InitialPolData
WHERE InitialPolData.ID NOT IN (SELECT Distinct InitialPolData.ID
from InitialPolData INNER JOIN
MasterLockInsNew
ON InitialPolData.ID=MasterLockInsNew.ID);
但每当我在Access中运行它时,它就会崩溃!!桌子相当大,但我不认为这是原因
有人能帮忙吗
谢谢简单的子查询就可以了
select * from InitialPolData
where id not in (
select id from MasterLockInsNew
);
简单的子查询就可以了
select * from InitialPolData
where id not in (
select id from MasterLockInsNew
);
尝试使用
不存在:
SELECT Distinct i.*
FROM InitialPolData AS i
WHERE NOT EXISTS (SELECT 1
FROM MasterLockInsNew AS m
WHERE m.ID = i.ID)
尝试使用不存在:
SELECT Distinct i.*
FROM InitialPolData AS i
WHERE NOT EXISTS (SELECT 1
FROM MasterLockInsNew AS m
WHERE m.ID = i.ID)
或者尝试左外连接
:
SELECT b.*
FROM InitialPolData b left outer join
MasterLockInsNew a on
b.id = a.id
where
a.id is null
或者尝试左外连接
:
SELECT b.*
FROM InitialPolData b left outer join
MasterLockInsNew a on
b.id = a.id
where
a.id is null
为什么不加入左派?它在Ms访问中通常更有效。为什么不使用左连接呢?Ms Access通常效率更高,这是获得我想要的最简单的方法。其他答案虽然看起来似乎合理,但在运行查询时会导致访问崩溃。谢谢大家的帮助。这是我想要的最简单的方法。其他答案虽然看起来似乎合理,但在运行查询时会导致访问崩溃。谢谢大家的帮助。