2013-04-09 63 views
0

我有一些我想插入到MYSQL表'table1'中的记录。其中一些是重复的。mysql select语句具有唯一和最大选择?

我做“字段中输入”和“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 

由于提前,

比尔

回答

1

如下你可以这样做:

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

max聚合功能,为您提供了最大的重复数,而GROUP BY保证只显示独特的项目。

如果你也需要知道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 
+0

感谢您的详细解释 – user61629 2013-04-10 13:34:07

1

您可以使用此查询:

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

你真的需要有数据结构如何?它看起来可以通过删除DUP_NUMBER列来简化,假定重复数字的顺序与ID的顺序相同。

1

试试这个

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

DEMO HERE