簡體   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