中的不存在的記錄其實我有一個值列表,我只想知道那些不存在於特定表中的值。用'IN'搜索記錄並顯示錶
表'球'的顏色值爲綠色和紅色。
特查詢到的註冊值返回是:
Select * from ball where colors in ('green', 'red', 'blue', 'gray')
在這種情況下,我需要返回藍色和灰色。
快速編輯:我有5k +結果做比較這種方式。
中的不存在的記錄其實我有一個值列表,我只想知道那些不存在於特定表中的值。用'IN'搜索記錄並顯示錶
表'球'的顏色值爲綠色和紅色。
特查詢到的註冊值返回是:
Select * from ball where colors in ('green', 'red', 'blue', 'gray')
在這種情況下,我需要返回藍色和灰色。
快速編輯:我有5k +結果做比較這種方式。
你需要使用UNION:
SELECT colors FROM
(select 'green'as colors
union
select 'red'
union
select 'blue'
union
select 'gray') all_colors
WHERE NOT EXISTS (SELECT ball.colors FROM ball WHERE ball.colors = all_colors.colors)
或者,如果你有一些表(或能使人),其中包含所有的顏色,你可以跳過聯盟和剛使用該表。
假設你有一個存儲所有可用的球色表,你可以做到這一點,像這樣:
SELECT all_colors.color
FROM all_colors LEFT JOIN balls ON balls.color = all_colors.color
WHERE balls.color IS NULL
你還可以創建在每個表中的列color
進一步加快速度吧指標。
一些閱讀左外連接:http://en.wikipedia.org/wiki/Join_(SQL)#Left_outer_join
不錯!由於我有5k +的值,所以有更簡單的方法嗎? –
不與MySQL不存在。我強烈建議你將它們導入某種表格中...... – PinnyM
@ Dan-SP,你的意思是5k顏色來檢查你的球檯嗎? – Andrew