在mysql中的GROUP BY查询上返回多个重复的行

时间:2015-05-16 18:45:27

标签: mysql sql

我使用以下mysql查询,认为它会给我一个按给定字段分组的唯一行表。我最终得到了几行,其中按字段分组是重复的,但唯一的ID和计数是唯一不同的东西。

有数万行,但只有几百行重复,但在字段中没有明显差异。可能导致这种情况的原因是什么?

 CREATE TABLE group_avg_product_prices AS
        SELECT group_id,
        feature_1, 
        feature_2, 
        feature_3,
        AVG(price) AS avg_price,
        count(*) AS sample_count, 
        GROUP_CONCAT(unique_id SEPARATOR ",") AS items
 FROM products_table
 GROUP BY group_id,
          feature_1, 
          feature_2, 
          feature_3

返回类似于:

的行
asdf123 | 2 | 1| .5| 2.65| 3| id1,id2,id3
asdf123 | 2 | 1| .5| 2.34| 2| id4,id5

它让我疯了,我找不到任何理由为什么会这样做。

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

根据您的示例数据,第四列是数字。它可能看起来像,但是值可能不同,例如0.499999和0.500001。

我的建议是使用format() - 在输出上,以便您可以看到差异,或在查询本身。例如,要将具有相似值的两行组合到第一个小数位:

 SELECT group_id, feature_1,  feature_2, 
        format(feature_3, 1) as feature_3,
        AVG(price) AS avg_price,
        count(*) AS sample_count, 
        GROUP_CONCAT(unique_id SEPARATOR ',') AS items
 FROM products_table
 GROUP BY group_id, feature_1, feature_2, 
          format(feature_3, 1);