我有一個表,每個人,每一件衣物的一個記錄的MySQL選擇記錄如果其他記錄不匹配
所以
peter, jumper,blue
peter,trousers,green
sue,dress,green
peter,jumper,red
gordon,jumper,green
我想編寫一個查詢來選擇所有的人綠色的跳投,但只有當他們沒有其他顏色的跳線
因此,在上述情況下,它只會選擇登不貪老彼得
這可能嗎?
我有一個表,每個人,每一件衣物的一個記錄的MySQL選擇記錄如果其他記錄不匹配
所以
peter, jumper,blue
peter,trousers,green
sue,dress,green
peter,jumper,red
gordon,jumper,green
我想編寫一個查詢來選擇所有的人綠色的跳投,但只有當他們沒有其他顏色的跳線
因此,在上述情況下,它只會選擇登不貪老彼得
這可能嗎?
這應該有效,但它沒有經過測試。語法也可能有點過,因爲我還有火鳥SQL中我的頭,但你應該得到的總體思路:
SELECT *
FROM myTable AS t1
WHERE t1.clothing = 'jumper' AND t1.color = 'green'
AND NOT EXISTS(SELECT *
FROM myTable AS t2
WHERE t2.person = t1.person AND t2.clothing = 'jumper'
AND t2.color <> 'green')
我要運行開了一個會議,但是CASE語句可能會幫助你這裏。
SELECT *
FROM MyTable t1
WHERE Color = 'green'
AND NOT EXISTS (
SELECT 1
FROM MyTable
WHERE Color <> 'green'
AND PersonName = t1.PersonName
)
這看起來不錯,但似乎已經殺了我的MySQL服務器 – zzapper 2009-05-01 15:13:57
沒錯這做到了。我有很多記錄要查詢。爲了減少執行時間,我必須確保主選擇儘可能緊湊,以便子選擇的執行時間較少 – zzapper 2009-05-01 16:14:43