gpt4 book ai didi

MySQL LEFT JOIN 返回空值

转载 作者:行者123 更新时间:2023-11-29 01:17:05 27 4
gpt4 key购买 nike

SELECT t1.id, t1.name, t1.population, CAST(SUM(t2.town_1) AS CHAR) AS town, CAST(SUM(CASE WHEN t2.id LIKE 23 THEN 1 ELSE 0 END) AS CHAR) AS population FROM area1 t1 LEFT JOIN area2 t2 ON t1.id = t2.id WHERE t1.id like 23

通常,如果两个表中都存在 id = 23,它将匹配。但事实并非如此(不在 t1 表中),因此请求返回 NULL 值。
如何才能不返回任何结果?

最佳答案

如果您只希望在 ID 存在于两个表中时匹配​​结果,则您正在寻找 INNER JOIN 而不是 LEFT JOIN。


编辑:

转念一想,这是因为您的聚合函数 (SUM)。您将它们转换为 CHAR(甚至不知道您可以这样做)。您应该使用 GROUP BY。试试这个:

SQL Fiddle

SELECT
t1.id,
t1.name,
t1.population,
SUM(t2.town_1) AS town,
SUM(CASE WHEN t2.id LIKE 23 THEN 1 ELSE 0 END) AS population
FROM
area1 t1
INNER JOIN area2 t2
ON t1.id = t2.id
WHERE
t1.id like 23
GROUP BY
t1.id,
t1.name,
t1.population

附带说明一下,您的 WHERE 子句中不需要 like。按照您的方式,它的作用与 = 符号相同。

关于MySQL LEFT JOIN 返回空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17457091/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com