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

时间:2018-11-14 18:42:17

标签: mysql sql select

我有两个表,例如汽车和维修站。 在两个表中,我都有“ licensePlate”列。 在表cars中,我具有以下值:0000 0001 0002 0003 在表repair中,我的值是:0000 0002 0003。 如何仅提取表cars中的值0001而不能提取repair中的值0001? 我认为我没有使用正确的“运算符”或类似的符号:

select car.licensePlate
from car, repair
where car.licensePlate (something) reparir.licensePlate;

3 个答案:

答案 0 :(得分:1)

您应使用NOT EXISTSLEFT JOIN,如下所示:

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

您特别应该使用NOT IN,因为如果子查询在 any <上返回NULL值,则语义就很奇怪(即行为很怪异)。 / em>行。发生这种情况时,外部查询将不返回任何行。

因此,我强烈建议使用NOT EXISTS而不是NOT IN进行子查询。

答案 1 :(得分:0)

您可以使用not in运算符:

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

答案 2 :(得分:0)

使用NOT IN运算符可以解决您的问题。它将如何工作:

从CAR中选择CAR.LICENSEPLATE CAR.LICNESEPLATE不在其中(从REPAIR中选择REPAIR.LICENSEPLATE)

执行此查询时,将其读取为: 从汽车中选择许可 CAR.LICNESEPLATE NOT IN(0000,0002,0003)

这是因为在由子查询组成的任何查询中,首先执行子查询(在本例中为SELECT REPAIR.LICENSEPLATE FROM REPAIR),并将子查询的结果传递给主查询。以上总结了上面提到的查询。

希望有帮助。干杯!