2011-08-18 70 views
0

我想消除我的數據庫中重複的field1/field2組合。我下面的僞查詢:消除重複的字段組合

SELECT * WHERE DISTINCT field1 AND field2 

與重複的表如下:

+-----+--------+--------+--------+ 
| id | field1 | field2 | field3 | 
+-----+--------+--------+--------+ 
| 1 | A | B | Z | 
| 2 | A | B | Q | 
| 3 | A | C | K | 
+-----+--------+--------+--------+ 

我想消除重複字段1 /域2的組合行。行2降至B/C是行的重複1

+-----+--------+--------+--------+ 
| id | field1 | field2 | field3 | 
+-----+--------+--------+--------+ 
| 1 | A | B | Z | 
| 3 | A | C | K | 
+-----+--------+--------+--------+ 
+0

關於您如何選擇要複製的記錄(id 1而不是id 2),標準是什麼? – shinkou

+0

我想消除重複的行,其中field1和field2都是重複的。 – Enki

+0

但是你如何從field3中的Z和Q中選擇Z?最大值? – shinkou

回答

0

此選擇你想要將縮小搜索結果:

select id, field1, field2, field3 from testtable1 group by field1,field2; 

因此,這將創建一個消除了重複一個新表:

create table testtable2 select id, field1, field2, field3 from testtable1 group by field1,field2; 

替換testtable1與您現有的表的相應的名稱。

+0

這對我工作感謝!!!! 'SELECT * FROM table GROUP BY field1,field2;' – Enki

+0

是的,完美的,它會隨意選擇要刪除的行而不是應用有效的業務邏輯! –

+0

從上面的評論,顯然他不在乎:) –