【问题标题】:MySQL - Selecting DISTINCT field with other fieldsMySQL - 使用其他字段选择 DISTINCT 字段
【发布时间】:2013-04-13 04:30:33
【问题描述】:

我有一张桌子..

field_1 |字段_2 |字段_3 |字段_4
数据_1 |数据_2 |数据_3 | data_4

所有带有表名的数据都可能重复。

我想选择唯一的 field_1,这样我就不会得到任何重复,但我还需要该行数据的其余部分。

SELECT DISTINCT field_1, field_2, field_3, field_4 FROM tablename;

上面的查询显然不起作用。所以我的问题是我该怎么做?

更新

如何防止重复显示。

所以如果我有

data_1|data_2|data_3|data_4
数据_1|数据_2|数据_3|数据_4
data_6|data_7|data_8|data_9

结果只会显示

data_6|data_7|data_8|data_9

【问题讨论】:

    标签: mysql distinct


    【解决方案1】:

    你能提供更多的记录吗?下面的查询将产生唯一的field_1,但每个组的记录都是随机的(尤其是在处理大型数据库时)。

    SELECT field_1, field_2, field_3, field_4
    FROM   TableName
    GROUP  BY field_1
    

    更新 1

    SELECT  field_1, field_2, field_3, field_4
    FROM    TableName
    GROUP   BY field_1, field_2, field_3, field_4
    HAVING  COUNT(*) = 1
    

    【讨论】:

    • 好吧,我觉得自己很愚蠢,因为我一直认为 group by 会这样做......将事情组合在一起。为什么它会删除重复项?
    • 因为它对field_1 进行分组,因此它只会显示唯一的field_1
    • ORDER BY 按照您的说明将内容组合在一起。 GROUP BY 控制摘要查询。
    • @OllieJones 你所说的 ORDER BY 将你所说的东西组合在一起是什么意思。? -- 也许你的意思是sort
    • 没错,JW。我见过很多不懂 sql 术语的人理解group by 表示排序
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-17
    • 1970-01-01
    • 2012-11-29
    • 1970-01-01
    • 1970-01-01
    • 2012-05-11
    相关资源
    最近更新 更多