我有两张桌子。车辆和所有权。我正在尝试进行一个查询,该查询将为我提供OWNERSHIP表中所有车辆 NOT 的列表。我基本上需要一份关于我的可用车辆库存的报告。我试过这个问题:
SELECT VEHICLE.*
FROM VEHICLE, OWNERSHIP
WHERE (VEHICLE.VEH_ID <> OWNERSHIP.VEH_ID);
我得到:
当我做到平等时,我会获得所有权中列出的所有车辆。但NOT Equal没有。有什么想法吗?
答案 0 :(得分:2)
尝试
SELECT VEHICLE.*
FROM VEHICLE
WHERE NOT EXISTS
(SELECT NULL FROM OWNERSHIP WHERE VEHICLE.VEH_ID= OWNERSHIP.VEH_ID);
答案 1 :(得分:1)
如果您的表包含许多行,NOT EXISTS
方法可能会很慢。另一种可以快得多的方法是使用带有LEFT JOIN
子句的WHERE
来仅返回右侧连接字段为空的行。
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'“查找不匹配的查询向导”来创建类似的查询。
如果两个表都很小,你可能不会发现差异。但是应该很容易检查差异是否明显。如果您的牌桌随着时间的推移大幅增长,这种方法将更好地为您服务