我有两个表:terms 和 logs1015。
需要根据类似的“hash”行将logs1015中的数据添加到terms。
如果“SUM(insum)”或“SUM(outsum)”大于 0,则此查询工作正常。
但如果 logs1015 不包含具有此类“哈希”的数据,则查询结果为空。
什么错误?谢谢
SELECT terems.*,
SUM(insum) as firstsum ,
SUM(outsum) as secondsum
FROM terems
LEFT JOIN logs1015 USING(hash)
WHERE owner='1'
AND (type='stat')
AND (time BETWEEN 1445904000 AND 1445990400)
GROUP BY name
LIMIT 1000
表结构
*terems*: id(int),hash(varchar),name(varchar),owner(int)
*logs1015*: id(int),hash(varchar),type(varchar),insum(int),outsum(int),time(varchar)
最佳答案
(左)外连接时,必须把外表上的where子句放在连接条件中,否则你说连接后一定存在。然后你已经隐式地将它变成了内部联接。
还可以在表上使用别名,以便您可以轻松发现这些错误。
示例:
SELECT t.name,
SUM(l.insum) as firstsum ,
SUM(l.outsum) as secondsum
FROM terems t
LEFT JOIN logs1015 l ON t.hash = l.hash
AND (l.type='stat')
WHERE t.owner='1'
AND (t.time BETWEEN 1445904000 AND 1445990400)
GROUP BY t.name
LIMIT 1000
关于MySQL 左连接空结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33368720/