我想在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
提前致谢,
比尔
答案 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`
答案 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