我有两张table,例如汽车和修理。在这两个表中,我都有“licenseplate”列。在table上 cars
我在表中有值:0000 0001 0002 0003 repair
我有值:0000 0002 0003。如何仅提取表中的值0001 cars
但不是在 repair
? 我想我没有使用正确的“运算符”之类的:
select car.licensePlate
from car, repair
where car.licensePlate (something) reparir.licensePlate;
3条答案
按热度按时间pxy2qtax1#
你可以用这个
not in
操作员:jmp7cifd2#
使用not-in操作符应该可以解决您的问题。它的工作原理是:
从car.licneseplate不在的车中选择car.licenseplate(从repair中选择repair.licenseplate)
当执行此查询时,它将被读取为:select car.licenseplate from car where car.licenseplate not in(0000000 20003)
这是因为在由子查询组成的任何查询中,首先执行子查询,在本例中选择repair.licenseplate from repair,子查询的结果将传递给主查询。总之就是上面提到的问题。
希望有帮助。干杯!
fzwojiic3#
你应该使用
NOT EXISTS
或者LEFT JOIN
,例如:你特别不应该使用
NOT IN
,因为如果子查询返回NULL
任何行上的值。发生这种情况时,外部查询将不返回任何行作为all。因此,我强烈建议
NOT EXISTS
而不是NOT IN
使用子查询。