开发者社区> 问答> 正文

SQL对所有行进行计数,而不是对单个行进行计数

我有一条SQL语句,该语句从数据库请求数据。

SELECT ID, To, Poster, Content, Time, ifnull(Aura,0) as Aura FROM ( SELECT * FROM ( SELECT DISTINCT * FROM messages m INNER JOIN ( SELECT Friend2 as Friend FROM friends WHERE Friend1 = '1' UNION ALL SELECT Friend1 as Friend FROM friends WHERE Friend2 = '1' ) friends ON m.Poster = friends.Friend UNION ALL SELECT DISTINCT , '1' FROM messages where Poster='1' ) var LEFT JOIN ( select ID as AuraID, Status as AuraStatus, count() as Aura from messages_aura ) aura ON (var.Poster = aura.AuraID AND var.ID = aura.AuraStatus) ) final

GROUP BY ID, Poster ORDER BY Time DESC LIMIT 10 这是我的messages_aura桌子布置。这表明ID,Status和UserID。

这是上述语句的输出。

(ID以上屏幕截图中的指的是Poster下面,Status而以上屏幕截图中的指的是ID下面)

该语句应使最下面一行的Aura计数为1,最上面一行的Aura计数为2。怎么了?

展开
收起
保持可爱mmm 2020-05-10 22:22:13 446 0
1 条回答
写回答
取消 提交回答
  • 您缺少GROUP BY,因此它只计算所有内容,而不是按某些列进行分组。

    LEFT JOIN ( select ID as AuraID, Status as AuraStatus, count(*) as Aura from messages_aura GROUP BY AuraID, AuraStatus ) aura ON (var.Poster = aura.AuraID AND var.ID = aura.AuraStatus)来源:stack overflow

    2020-05-10 22:22:23
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
SQL Server 2017 立即下载
GeoMesa on Spark SQL 立即下载
原生SQL on Hadoop引擎- Apache HAWQ 2.x最新技术解密malili 立即下载