我确信这个问题已经被问过并得到了回答,但不知道这个问题到底应该如何。
我有两张 table
ID | name
=========
1 | foo
2 | bar
3 | lou
4 | sue
和元表:
p_ID | key | value
===================
1 | poo | 1
2 | zoo | 'whatever'
3 | clu | 423
4 | poo | 1
我喜欢从第一个表中获取所有未分配 poo
值的条目:
ID | name
=========
2 | bar
3 | lou
我的方法是
SELECT *
FROM table AS p
LEFT JOIN meta AS m
ON m.p_id = p.ID
WHERE m.key = 'poo'
AND m.value IS NULL
但这返回一个空结果
最佳答案
您必须将 m.key = 'poo'
表达式移至 ON 子句中。 WHERE 子句中的所有内容都必须存在,即使在 LEFT JOIN 中也是如此。
SELECT *
FROM table AS p
LEFT
JOIN meta AS m
ON m.p_id = p.ID
AND m.key = 'poo'
WHERE m.value IS NULL
关于MySQL 带有 NULL 值的左连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38197237/