我在使用非常简单的sql查询时遇到了麻烦。我想识别所有具有多个名称的项目。这是我目前正在做的事情:
select group_concat(distinct name) names
from table
group by master_id
having names like '%,%'
不幸的是,很多names
中都有,
,因此上述方法无法正常工作。进行此查询的正确方法是什么?
答案 0 :(得分:3)
这是您查询的正确版本:
SELECT
master_id,
GROUP_CONCAT(DISTINCT name) names
FROM yourTable
GROUP BY master_id
HAVING COUNT(DISTINCT name) > 1;
我们需要在HAVING
子句中进行区分的原因是,聚合字符串中的逻辑项是 distinct 名称。
答案 1 :(得分:0)
正确的解决方案是:
… HAVING COUNT(name) > 1
在使用GROUP BY
的查询中,聚合函数COUNT()
,MIN()
和MAX()
(以及GROUP_CONCAT()
以及其他一些函数)可用于对分组的行中一列的所有值进行操作。
您还可以在各列中包含COUNT(name)
,以返回master_id
的名称数。