2015-05-01 56 views
-3

如何編寫一個查詢,其中包含組ID的列表(可以是1,可以是10等),並獲取不是用戶在任何這些組?MySQL將用戶表添加到組表中,找到不在任何選定組中的用戶

我們正在使用Doctrine,但我們甚至無法弄清楚如何在原始SQL中執行此操作。

如果我們需要根據多少個ID提供多個連接/條件等,讓PHP生成查詢的一部分是可以的。

+0

我們怎麼知道不表模式? –

+0

'left join'後跟'where ... is null'是這種過濾查詢的常用模式。 –

+0

左空加入是讓我們的用戶不在所有的組中,所以如果我們選擇組A和B,我們仍然得到一些組A中的用戶。 – Jessica

回答

1

如果我對你的表結構一般假設是正確的,我相信這樣的事情應該工作:

SELECT * 
FROM users 
WHERE user_id NOT IN (
    SELECT DISTINCT user_id 
    FROM user_groups 
    WHERE group_id IN ([your group list]) 
); 
+0

我們試圖做到沒有一個子選擇,但這也是我們提出的唯一方法。非常感謝你! – Jessica

+0

@Jessica,它可以在不子選擇來完成,而是被一種奇怪的看着: 選擇u.user_id,ug.group_id 從用戶爲u LEFT JOIN user_groups AS微克 ON u.user_id = ug.user_id 和UG .group_id IN([您的組列表]) HAVING ug.group_id IS NULL; (其中group_id可能工作,這是一段時間,因爲我需要這樣的查詢) – Uueerdo

+0

你能告訴我嗎?我們有幾個相當聰明的人,無法到達;) – Jessica

相關問題