Mysql 在分组和计数后向左加入

Mysql 在分组和计数后向左加入,mysql,sql,Mysql,Sql,我有这个疑问 select device.device_id, device.device_category, count(device.device_category) referrals from device left join device_category on device.device_category = device_category.cat_id GROUP BY device.device_category device_id| device_category| re

我有这个疑问

select device.device_id, device.device_category, count(device.device_category) referrals
from device
left join device_category  on device.device_category = device_category.cat_id
GROUP BY device.device_category


device_id| device_category| referrals
:------  | :---------     | --------:
    1    |     1          |      80
    3    |     5          |      7
但是我没有从设备类别表中得到左连接 这个查询有什么问题

我想得到这个结果

  device_id  | device_category  | referrals  | cat_id   | cat_name
    :------  | :---------       | --------:  | --------:| --------:
        1    |     1            |      80    |     1    |     Video
        3    |     5            |      7     |     5    |     Audio

大概你想要这样的东西:

select dc.*,
       (select count(*)
        from device d
        where d.device_category = dc.cat_id
       ) as num_referrals
from device_category dc;

注意:这不会返回设备id,因为该列在聚合结果中没有意义。

您需要在“选择”对话框中选择所需的列。此外,select列与group by列不一致,即使MySQL的旧版本允许此语法,查询也会返回错误。OHHHH!谢谢你!!在从设备表中计算设备id之前,是否有一种方法可以分组?@DrorShalit。那没有道理。你是说这不符合你的要求,这似乎是在为每个类别计算设备中的行数?