mysql - 为什么 mysql 查询多个计数语句返回单个值?

标签 mysql

我正在创建简单的图库,每个图库都可以是混合图像/视频。在画廊列表中,我想显示每个画廊的图像/视频数量。但是,我只收到一个结果行,真的不知道为什么。

画廊表示例:

id  title
=====================
1   Simple gallery
2   Test gallery

简单的 gallery_items 表:

id  gallery_id  type   title
================================
1   1           image  title1
2   1           image  title2
3   1           video  title3
4   1           image  title4
5   2           image  title5
6   2           image  title6

我正在使用的查询是:

select galleries.*, count(distinct A.id) as IMG, count(distinct B.id) as VID 
from galleries
left join gallery_items A on (galleries.id=A.gallery_id and A.type='image')
left join gallery_items B on (galleries.id=B.gallery_id and B.type='video')

这产生了预期的结果:

id  title           IMG VID
================================
1   Simple gallery  3   1

但问题是只显示一行。无法显示所有行...有什么想法吗?

最佳答案

是的,Salmon 是对的...只需添加“group by galleries.id”即可解决问题:)

select galleries.*, count(distinct A.id) as IMG, count(distinct B.id) as VID 
from galleries
left join gallery_items A on (galleries.id=A.gallery_id and A.type='image')
left join gallery_items B on (galleries.id=B.gallery_id and B.type='video')
group by galleries.id

关于mysql - 为什么 mysql 查询多个计数语句返回单个值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49464091/

相关文章:

c# - 插入命令的单元测试

mysql - 获取具有特定值的记录数量,但每个唯一字段仅获取一次

java - 如何清理和构建使用带有 JDBC 和 Java 的 MySQL 的 NetBeans 项目?

mysql - 如何将条件 "LIKE ? %something%"添加到此连接的产品标题中

mysql - 比较同一个表中的几行,看看状态是否根据时间变化[mysql]

MySQL WHERE 日期 > 15 天

mysql - 请求卡在 ActiveRecord::QueryCache 中间件中

MySQL 查询选择自动递增的结果作为结果中添加的新列

mysql - 在几个条件下计算总数

如果没有结果,MySql 选择默认值?