[英]MySQL: IS NULL in joined tables
我的JOIN和IS NULL有一些困難..
基本上我想要做的是找到所有不屬於我指定的某些組類別ID的成員。
SELECT m.* FROM elvanto_members AS m
LEFT JOIN elvanto_groups AS g ON g.deleted = 0
LEFT JOIN elvanto_groups_categories AS gc ON gc.group_id = g.id AND (gc.category_id = '1' OR gc.category_id = '2')
WHERE gr.id IS NULL
有些成員完全不屬於任何類別,這就是為什么我把它作為LEFT JOIN。
我有道理嗎? 你知道如何解決這個問題嗎?
嘗試這個:
SELECT m.* FROM elvanto_members AS m
WHERE
not exists
(
SELECT 1 FROM
elvanto_groups AS g
INNER JOIN elvanto_groups_categories AS gc ON
gc.group_id = g.id
WHERE
gc.category_id IN ('1','2') AND
g.id = m.group_id AND
g.deleted = 0
)
SELECT m.*
FROM elvanto_members AS m
LEFT JOIN elvanto_groups AS g ON g.id = m.group_id AND g.deleted = 0
LEFT JOIN elvanto_groups_categories AS gc ON gc.group_id = g.id
AND gc.category_id IN ('1','2')
WHERE gc.group_id IS NULL
GROUP BY m.*
我填寫了問題中遺漏的內容。
category_id
真的是一個字符串類型嗎? 我希望它是數字的。 然后這個表達式應該是:
AND gc.category_id IN (1,2)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.