sql—从两个表的两列中选择不同的值

bvjveswy  于 2021-06-19  发布在  Mysql
关注(0)|答案(3)|浏览(385)

我有两张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;
pxy2qtax

pxy2qtax1#

你可以用这个 not in 操作员:

SELECT licensePlate
FROM   car
WHERE  licensePlate NOT IN (SELECT licensePlate
                            FROM   repair)
jmp7cifd

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,子查询的结果将传递给主查询。总之就是上面提到的问题。
希望有帮助。干杯!

fzwojiic

fzwojiic3#

你应该使用 NOT EXISTS 或者 LEFT JOIN ,例如:

select c.licensePlate
from car c
where not exists (select 1 from repair r where c.licensePlate = r.licensePlate;

你特别不应该使用 NOT IN ,因为如果子查询返回 NULL 任何行上的值。发生这种情况时,外部查询将不返回任何行作为all。
因此,我强烈建议 NOT EXISTS 而不是 NOT IN 使用子查询。

相关问题