MySQL 带有 NULL 值的左连接

标签 mysql

我确信这个问题已经被问过并得到了回答,但不知道这个问题到底应该如何。

我有两张 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/

相关文章:

mysql - 喜欢的帖子设计细节

C#插入表,报错

mysql - SQL 在字符前插入/更新带有文本的字段

mysql - 我可以从存储过程访问远程 mysql 服务器/数据库吗?

mysql - XAMPP phpmyadmin mysql 用户手册?

php - mysql 请求逻辑

php - MYSQL UPDATE仅添加两个句点

WHERE 子句中的 MySQL 变量

php - 存储购物车的临时数据

php - 使用一个选择查询选择 2 个表