3

我有两张桌子。车辆和所有权。我正在尝试进行查询,该查询将为我提供不在 OWNERSHIP 表中的所有 VEHICLES列表。我基本上需要一份关于我的可用车辆库存的报告。我试过这个查询:

SELECT VEHICLE.*
FROM VEHICLE, OWNERSHIP
WHERE (VEHICLE.VEH_ID <> OWNERSHIP.VEH_ID);

我越来越:在此处输入图像描述

当我做平等时,我会得到所有权中列出的所有车辆,这样就可以了。但是 NOT Equal 没有。有任何想法吗?

4

2 回答 2

2

尝试

SELECT VEHICLE.*
FROM VEHICLE
WHERE NOT EXISTS
(SELECT NULL FROM OWNERSHIP WHERE VEHICLE.VEH_ID= OWNERSHIP.VEH_ID);
于 2012-11-25T18:42:20.220 回答
1

如果您的表包含许多行,则该NOT EXISTS方法可能会很慢。另一种更快的方法是使用LEFT JOINwithWHERE子句仅返回右侧连接字段为 Null 的行。

SELECT VEHICLE.*
FROM
    VEHICLE AS v
    LEFT JOIN OWNERSHIP AS o
    ON v.VEH_ID = o.VEH_ID 
WHERE o.VEH_ID Is Null;

您可以使用 Access 的“查找不匹配的查询向导”来创建类似的查询。

如果两张桌子都很小,您可能不会注意到差异。但是应该很容易检查差异是否明显。如果您的表格随着时间的推移大幅增长,这种方法将为您提供更好的服务。

于 2012-11-25T19:14:54.667 回答