【发布时间】:2009-12-15 17:08:39
【问题描述】:
我正在处理一个 Access 数据库,我需要在其中提取几个报告。对于其中一个,我需要比较两个数字列表 List1 和 List2(我都从单独的查询中获得),并且只显示那些在 List1 中但不在 List2 中的数字。
有人可以帮忙吗? 谢谢。
【问题讨论】:
标签: sql ms-access list compare
我正在处理一个 Access 数据库,我需要在其中提取几个报告。对于其中一个,我需要比较两个数字列表 List1 和 List2(我都从单独的查询中获得),并且只显示那些在 List1 中但不在 List2 中的数字。
有人可以帮忙吗? 谢谢。
【问题讨论】:
标签: sql ms-access list compare
其他人在 SQL 中提供了一些很好的答案,但您可能希望使用 Access 的一些内置功能。
当我在查询屏幕中时(在 Access XP/2002 中,但在 Access 2003 中应该相同),我可以单击New,然后有一个Find Unmatched Query Wizard 选项。这将引导您完成一系列对话框,帮助您设置要查找的查询。在执行此向导之前,您需要先定义“List1”和“List2”(来自您的示例)。
完成此设置后,您将能够看到 Access 如何创建查询,这是一种很好的学习方式。
【讨论】:
您可以使用LEFT OUTER JOIN 来完成此操作
SELECT T1.val
FROM table1 T1
LEFT OUTER JOIN table2 T2 ON T1.Val = T2.Val
WHERE T2.VAL IS NULL;
【讨论】:
SELECT some_value
FROM table1
WHERE some_value not in ( select some_value from table2);
【讨论】:
SELECT *
FROM (
SELECT number
FROM …
) query1
WHERE query1.number NOT IN
(
SELECT number
FROM …
) /* query2 */
【讨论】:
MS Access,可能。在SQL Server 中,IN 子查询的性能比LEFT JOIN 好得多。
IN 在查询性能方面与NOT IN 有着根本的不同。