如何查找具有多个不同名称的项目

时间:2019-01-01 03:53:22

标签: mysql sql

我在使用非常简单的sql查询时遇到了麻烦。我想识别所有具有多个名称的项目。这是我目前正在做的事情:

select group_concat(distinct name) names
from table 
group by master_id
having names like '%,%'

不幸的是,很多names中都有,,因此上述方法无法正常工作。进行此查询的正确方法是什么?

2 个答案:

答案 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的名称数。