如何編寫一個查詢,其中包含組ID的列表(可以是1,可以是10等),並獲取不是用戶在任何這些組?MySQL將用戶表添加到組表中,找到不在任何選定組中的用戶
我們正在使用Doctrine,但我們甚至無法弄清楚如何在原始SQL中執行此操作。
如果我們需要根據多少個ID提供多個連接/條件等,讓PHP生成查詢的一部分是可以的。
如何編寫一個查詢,其中包含組ID的列表(可以是1,可以是10等),並獲取不是用戶在任何這些組?MySQL將用戶表添加到組表中,找到不在任何選定組中的用戶
我們正在使用Doctrine,但我們甚至無法弄清楚如何在原始SQL中執行此操作。
如果我們需要根據多少個ID提供多個連接/條件等,讓PHP生成查詢的一部分是可以的。
如果我對你的表結構一般假設是正確的,我相信這樣的事情應該工作:
SELECT *
FROM users
WHERE user_id NOT IN (
SELECT DISTINCT user_id
FROM user_groups
WHERE group_id IN ([your group list])
);
我們試圖做到沒有一個子選擇,但這也是我們提出的唯一方法。非常感謝你! – Jessica
@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
你能告訴我嗎?我們有幾個相當聰明的人,無法到達;) – Jessica
我們怎麼知道不表模式? –
'left join'後跟'where ... is null'是這種過濾查詢的常用模式。 –
左空加入是讓我們的用戶不在所有的組中,所以如果我們選擇組A和B,我們仍然得到一些組A中的用戶。 – Jessica