mysql - 左外部联接不适用于具有重复 ID 的列

标签 mysql sql

这是表1:

enter image description here

这是表2:

enter image description here

我想看到这个结果:

enter image description here

我写了这个查询:

select title, value 
from table1 
left outer join table2 
    on table1.id = table2.id 
where category="good"

但它给了我这个结果:

enter image description here

那么,我应该使用什么查询来获得标题 c 带有“”的结果? (空字符串)

最佳答案

table2.category 上的谓词移动到 ON 子句,而不是 WHERE 子句。

(在 WHERE 子句中,这否定了 LEFT JOIN 操作的“外部性”,因为来自 table1 的任何行没有来自 table2 的匹配行将具有 table2 列的 NULL 值。检查非空值排除所有“不匹配”的行,使 LEFT JOIN 等同于 INNER JOIN

返回指定结果集的一种方法:

SELECT t.title
     , s.value
  FROM table1 t
  LEFT
  JOIN table2 s 
    ON s.id = t.id 
   AND s.category = "good"

关于mysql - 左外部联接不适用于具有重复 ID 的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25249977/

相关文章:

带有行计数器的 SQLServer SQL 查询

javascript - Node.JS 函数返回异步回调函数的值

mysql - 多行转单行查询结果

php - 生成贷款收据报告(退款或反向交易)

php - 测试 Gearman/MySQL - 持久层

sql - 选择一列 DISTINCT SQL

sql - 两个查询是否相同?

mysql - SQL错误1064 建表失败

MYSQL:一月份新增用户最多的国家?

sql - 如何查看物化 View 的原始脚本?