Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 比较两个表的访问查询_Sql_Ms Access_Nested Queries - Fatal编程技术网

Sql 比较两个表的访问查询

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数据: +----+-------+----------

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   |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通常效率更高,这是获得我想要的最简单的方法。其他答案虽然看起来似乎合理,但在运行查询时会导致访问崩溃。谢谢大家的帮助。这是我想要的最简单的方法。其他答案虽然看起来似乎合理,但在运行查询时会导致访问崩溃。谢谢大家的帮助。