2016-12-12 97 views
-2

我需要刪除一些「類似」行中的數據庫。如何刪除MYSQL數據庫中的類似重複

 
barcode name COL3 
1234  item1 price10$ 
1234  item1 price50$ 
5678  item2 price10$ 

如何從數據庫中刪除#2(50dlls)?

我試着用MIN,MAX,DISTINCT,WHERE條款但沒有。

+0

這是一團糟。 – Strawberry

+1

是什麼讓你決定刪除#2?爲什麼不#1呢?有規則嗎?或者它沒有關係,我們可以刪除一個或另一個(只有兩個都不行):-)? –

+0

什麼是「50dlls」應該是什麼意思? –

回答

0

最簡單的方法是創建一個沒有第一個重複表的新表。然後,您可以刪除舊錶並重命名新表。

create table new_table as 
select barcode, name, min(col3) as col3 
from old_table 
group by barcode, name; 
+0

create table new_table as(從old_table選擇條形碼,名稱,min(col3)作爲col3 ;) - 它僅返回第1行 –

0

可以使用delete做到這一點:

delete t 
    from t join 
     (select barcode, name, min(col3) as mincol3 
      from t 
      group by barcode, name) 
     ) tt 
     on t.barcode = tt.barcode and t.name = tt.name and t.col3 > tt.mincol3 ; 

這假定mincol3是獨一無二的,該表是不是太大。最快的方法很可能是truncate並重新insert

create temporary table tt as 
    select barcode, name, min(col3) as col3 
    from t 
    group by barcode, name; 

truncate table t; 

insert into t(barcode, name, col3) 
    select barcode, name, col3 
    from tt; 
0

這裏是最後的結果。 thx所有。

SELECT COL1,COL2,MIN(COL22)AS 「最低」,COL3,COL4 FROM表1 GROUP BY COL1

現在我有所有產品。重要的「由......組」

相關問題