**Table A**
1
2
3
4
5
6
**Table B**
2
3
5
如何選擇僅在表B中存在的條目ID?在這個例子中,我在尋找返回1,4查詢和6MySQL - 如何獲取表B中不存在的值的列表?
**Table A**
1
2
3
4
5
6
**Table B**
2
3
5
如何選擇僅在表B中存在的條目ID?在這個例子中,我在尋找返回1,4查詢和6MySQL - 如何獲取表B中不存在的值的列表?
假設列被命名爲 'ID',或者:
SELECT *
FROM tableA a
WHERE NOT EXISTS (SELECT 1 FROM tableB WHERE id = a.id)
或
SELECT *
FROM TableA
WHERE id NOT IN (SELECT id FROM tableB)
你可能會需要進行測試,看看哪一種最適合。 MySQL可能有點不可預測。
嘗試
select value from B where value not in (select value from A)
獲得B中不在A.值
要獲得相反(在未在B值)使用
select value from A where value not in (select value from B)
我會很好奇,看看這是如何執行克萊圖提供的答案。我最初的想法是回答他寫的內容,但這不會更快嗎?嗯。 – 2009-07-03 14:28:18
如果表B可以包含NULL值,那麼NOT IN是一個危險的工具,請參閱http://stackoverflow.com/questions/129077/sql-not-in-constraint-and-null-values考慮使用NOT EXISTS。 – Andomar 2009-07-03 14:40:44
這避免了IN
+子查詢:
SELECT A.value FROM A
LEFT OUTER JOIN B ON (A.value = B.value)
WHERE B.value IS NULL
因爲IN (subquery)
isn't optimized,因爲它是在表中每發現行A
什麼是這些值來執行? IDS?提供表格結構實際上會讓我們更容易 – 2009-07-03 14:28:32
對不起,是的,他們是ID。我原本提供了更多的信息,但後來我認爲我只會減少相關的位數。顯然我削得太過分了。 – Eileen 2009-07-03 14:34:29