2017-07-15 76 views
0

我有我需要消除具有相同代碼和不同狀態的元素的表。根據一些編碼查詢消除重複記錄

例如,這是我的表:

+-------------+------------+ 
| Code  | Status  | 
+-------------+------------+ 
| 01   | 1   |     
+-------------+------------+ 
| 02   | 1   |    
+-------------+------------+ 
| 03   | 1   |    
+-------------+------------+ 
| 01   | 2   |    
+-------------+------------+ 

輸出應該是這樣的一種:

+-------------+------------+ 
| Code  | Status  | 
+-------------+------------+ 
| 02   | 1   |    
+-------------+------------+ 
| 03   | 1   |    
+-------------+------------+ 

這意味着,我需要消除具有狀態1和2中的第一代碼表中可以看到Code 01有兩個狀態,狀態1和狀態2,第二個表中不再可見。

如何用mysql做到這一點?

回答

2

這裏有一個方法:

select t.* 
from t 
where not exists (select 1 from t t2 where t2.code = t.code and t2.status <> t.status); 

如果在原始表副本,這將返回重複。或者,如果你只是想有一個狀態,每一個代碼一行代碼,你可以使用group by

select t.code, max(t.status) as status 
from t 
group by t.code 
having min(t.status) = max(t.status); 
+0

這麼簡單,非常感謝。 – Josef