繁体   English   中英

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

[英]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 EXISTSLEFT 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM