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