MySQL 左连接空结果

标签 mysql

我有两个表:termslogs1015
需要根据类似的“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/

相关文章:

php - 使用 zend 1.12 在 mysql 中保存 xslt 表单

mysql - 如何在 MySQL 数据库修订安全(可信时间戳)中签署数据?

mysql - 如何更有效地编写以下 MySQL 查询?

jquery - 用户端数据的 Ajax 请求监听器

MySQL - 获取年龄和两个日期之间的天数

php - LINQ 与 PDO 类似吗?

php - 在 Mysql 上使用 AJAX/PHP 进行多个输入字段验证

mysql - 帮忙做一个mysql查询

mysql - 如何从mysql连接下载数据

php - 如何将数组插入Mysql表中