2014-07-18 23 views
0

我有這個表的結構:找到未在其他表中存在的記錄

-request REQUEST_ID user_id說明

-user user_id說明 COMPANY_ID

-company COMPANY_ID

我想從請求表中選擇所有這些記錄user_id =?並且沒有這樣的用戶的公司ID相同的記錄。

+0

SELECT * FROM「與同一家公司,誰擁有至少1請求用戶」請求WHERE user_id NOT IN(SELECT user_id FROM user WHERE user_id = 123) – Desire

+0

'如果user_id = 123和其他user_id = 456兩個用戶company_id = 999,所以我只需要那些來自user_id = 456的user_id = 123的請求請求表中沒有條目。「請謹慎解釋這意味着什麼? –

+0

http://explainextended.com/2009/09/18/not-in-vs-not-exists-vs-left-join-is-null-mysql/ –

回答

1

這通常是使用LEFT JOIN實現:

SELECT r.* 
FROM request r 
JOIN user u ON r.user_id = u.user_id 
LEFT JOIN u1 ON u1.user_id != u.user_id AND u1.company_id = u.company_id 
LEFT JOIN request r1 ON r1.user_id = u1.user_id 
WHERE r1.user_id IS NULL 

通過「其中」我們說,我們不希望

相關問題