[英]Select the different value from two columns from two tables mysql
我有两张桌子,例如汽车和修理。 在两个表中,我都有“licensePlate”列。 在表cars
我有值:0000 0001 0002 0003 在表repair
我有值:0000 0002 0003。如何只提取在表cars
但不在repair
的值 0001? 我想我没有使用正确的“运算符”或类似的东西:
select car.licensePlate
from car, repair
where car.licensePlate (something) reparir.licensePlate;
您应该使用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
任何行值。 发生这种情况时,外部查询将不会返回任何行。
出于这个原因,我强烈建议使用NOT EXISTS
而不是NOT IN
与子查询。
您可以使用not in
运算符:
SELECT licensePlate
FROM car
WHERE licensePlate NOT IN (SELECT licensePlate
FROM repair)
使用 NOT IN 运算符应该可以解决您的问题。 它的工作原理是:
从 CAR.LICNESEPLATE 不在的 CAR 中选择 CAR.LICENSEPLATE(从维修中选择 REPAIR.LICENSEPLATE)
执行此查询时,它会读作:SELECT CAR.LICENSEPLATE FROM CAR WHERE CAR.LICNESEPLATE NOT IN (0000,0002,0003)
这是因为在任何由子查询组成的查询中,子查询首先执行,在这种情况下是 SELECT REPAIR.LICENSEPLATE FROM REPAIR,子查询的结果传递给主查询。 这总结了上面提到的查询。
希望能帮助到你。 干杯!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.