繁体   English   中英

如何在SQL中获取“分组依据”中某一行的所有值?

[英]How to get all values of a certain row in a “group by” in SQL?

我想让我的查询显示出报告最多的条目(哪些有效)以及给出的所有原因(哪些无效)。 通过当前查询,我只能得到一个原因,而不是所有原因。 (我尝试过函数concat_ws(),但似乎不合适)。 有人可以帮忙吗?

SELECT `entries`.`id`, count(`reports`.`id`) AS `amount`, 
concat_ws(', ',`reports`.`reason`) AS `reasons` 
FROM `entries` 
CROSS JOIN `reports` ON (`entries`.`id` = `reports`.`entry_id`) 
GROUP BY `entries`.`id` ORDER BY `amount` DESC

您应该使用GROUP_CONCAT聚合函数:

SELECT
  `entries`.`id`,
   count(`reports`.`id`) AS `amount`, 
   group_concat(`reports`.`reason` SEPARATOR ', ') AS `reasons` 
FROM
  `entries` CROSS JOIN `reports`
  ON (`entries`.`id` = `reports`.`entry_id`) 
GROUP BY
  `entries`.`id` ORDER BY `amount` DESC

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM