0

我有许多记录要插入到 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

提前致谢,

账单

4

3 回答 3

1

您可以使用此查询:

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

您真的需要按原样结构化数据吗?看起来可以通过删除DUP_NUMBER列来简化它,假设重复的数字与ID.

于 2013-04-09T21:08:38.927 回答
1

试试这个

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

在这里演示

于 2013-04-09T21:08:39.163 回答
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
于 2013-04-09T21:14:44.087 回答