2013-04-09 66 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