林有2個表 表1內連接查詢爲MySQL
ID AnimalNAme
1 Dog1
1 Dog2
2 cat1
3 Cow1
3 Cow2
4 Rat1
4 Rat2
表2
ID AnimalNAme
1 Dog1
2 cat1
3 Cow1
4 Rat2
我需要輸出
1 Dog2
3 Cow2
4 Rat1
林有2個表 表1內連接查詢爲MySQL
ID AnimalNAme
1 Dog1
1 Dog2
2 cat1
3 Cow1
3 Cow2
4 Rat1
4 Rat2
表2
ID AnimalNAme
1 Dog1
2 cat1
3 Cow1
4 Rat2
我需要輸出
1 Dog2
3 Cow2
4 Rat1
我認爲你正在尋找NOT EXISTS
:
SELECT ID, AnimalName
FROM Table1
WHERE NOT EXISTS
( SELECT 1
FROM Table2
WHERE Table1.ID = Table2.ID
AND Table1.AnimalName = Table2.AnimalName
);
這將返回所有行不表2
存在table1的它是,但是值得注意的是,在MySQL LEFT JOIN/IS NULL
generally performs better比NOT EXISTS
,並且具有相同的效果。通過說明OUTERTABLE.Column IS NULL
您正在將查詢限制爲外表中沒有相應項目的行。
SELECT Table1.ID, Table1.AnimalName
FROM Table1
LEFT JOIN Table2
ON Table1.ID = Table2.ID
AND Table1.AnimalName = Table2.AnimalName
WHERE Table2.ID IS NULL;
可能不是最好的選擇,但你可以嘗試以下查詢:
SELECT *
FROM table1
LEFT JOIN table2 ON table2.AnimalName = table1.AnimalName
WHERE table2.AnimalName IS NULL
LEFT JOIN和檢查非比賽嗎?
SELECT
FROM Table1 a
LEFT OUTER JOIN Table2 b
ON a.ID = b.ID
AND a.AnimalName = b.AnimalName
WHERE B.ID IS NULL
由於您的問題沒有完全說明它,我只能通過提供的數據來猜測。我如何獲得第一張表格中所有動物的列表,而不是第二張表格中的動物列表。
對您正在比較的表執行左連接,並在第二個表中檢查NULL。
select
t1.id,
t1.animalName
from
Table1 t1
left join table2 t2
on t1.id = t2.id
AND t1.animalName = t2.animalName
where
t2.id IS NULL
我正在做的兩列左加入,因爲誰知道數據的質量,並具有相同名稱的多個動物名稱,但在不同的ID ......比如ID與寵物的所有者相關聯。
期望輸出的條件是什麼?沒有明確的條件來過濾輸出中的列表。 – Bere
其工作正確的錯誤,我正在做的是iwas使用左連接,我給了Table1.AnimalName!= Table2.AnimalName 並沒有指定「WHERE Table2.ID IS NULL」 – vishu