这是表1:
这是表2:
我想看到这个结果:
我写了这个查询:
select title, value
from table1
left outer join table2
on table1.id = table2.id
where category="good"
但它给了我这个结果:
那么,我应该使用什么查询来获得标题 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/