具有唯一和最大选择的mysql select语句?

时间:2013-04-09 21:01:12

标签: php mysql

我想在MYSQL表'table1'中插入一些记录。其中一些是重复的。

我有一个由'FIELD A'和'DUP_NUMBER'组成的复合唯一约束

所以一组记录看起来像是:

ID     FIELD A     DUP_NUMBER 
1       text1        0
2       text2        0
3       text2        1
4       text2        2
5       text3        0

再一次将其插入表中。如果是这样,我可以这样做吗?

我正在寻找一个mysql select语句,它只会选择FIELD a中的唯一条目,但添加的条件是你获得最高的DUP_NUMBER。

结果集应如下所示:

ID     FIELD A     DUP_NUMBER 
1       text1        0
4       text2        2
5       text3        0

提前致谢,

比尔

3 个答案:

答案 0 :(得分:1)

您可以使用此查询:

SELECT `FIELD A`, MAX(`DUP_NUMBER`) AS `DUP_NUMBER`
FROM `table1`
GROUP BY `FIELD A`

您真的需要将数据结构化吗?看起来可以通过删除DUP_NUMBER列来简化它,假设重复的数字与ID的顺序相同。

答案 1 :(得分:1)

试试这个

   select id , `field a` ,MAX(`DUP_NUMBER`) as dup_number  
   from table1 group by `FIELD A`

DEMO HERE

答案 2 :(得分:1)

您可以按照以下方式执行此操作:

SELECT field_a, max(dup_number) as dup
FROM table1
GROUP BY field_a

max聚合函数,为您提供重复数字的最大值,而保证组只显示唯一的项目。

如果您还需要知道ID,您可以执行以下操作

SELECT t.*
FROM table1 t INNER JOIN (
    SELECT field_a, max(dup_number) as dup
    FROM table1
    GROUP_BY dup_number
) g ON t.field_a = g.field_a AND t.dup_number = g.dup