MySQL计算组concat中的重复项

时间:2017-09-15 07:01:29

标签: mysql

执行查询后,这是我的结果:

public $timestamps = false;

我想只获得3排。因为S-029-45,S-029-45BEFR S-035-45,S-035-45FR,S-029-45,S-029-45FR S-035-45,S-035-45DE,S-035-45,S-035-45DE S-029-45,S-029-45DE,C-003-DACH 出现两次。为了获得这些行,我使用了S-035-45(my_colum_name)。

我的查询如下:

GROUP_CONCAT

如何在我的情况下只显示3行?我想获得所有数据,我找到了2个重复项。我怎样才能做到这一点 ?我不能使用像mycolumnname =' S-035-45'那里的where条件。这些数据是动态的。

谢谢

1 个答案:

答案 0 :(得分:1)

加入一个计算my_column_name重复次数的查询,并返回计数正好为2的order_id

SELECT GROUP_CONCAT(my_column_name)
FROM my_table AS t1
JOIN (SELECT DISTINCT order_id
      FROM (SELECT order_id, my_column_name
            FROM my_table
            GROUP BY order_id, my_column_name
            HAVING COUNT(*) = 2) AS x) AS t2
ON t1.order_id = t2.order_id
GROUP BY t1.order_id