2014-03-19 41 views
0

我一直在尋找合適的解決方案。以下是我的table.i不想使用臨時表。請幫我在沒有主鍵的表中刪除重複項(使用臨時表時不使用)。

mysql> select * from Employees; 

+-------+------+-----+--------+ 
| Empid | Name | Did | Salary | 
+-------+------+-----+--------+ 
| 123 | a | 1 | 10000 | 
| 321 | b | 2 | 20000 | 
| 421 | c | 2 | 20000 | 
| 521 | c | 2 | 20000 | 
| 621 | e | 2 | 35000 | 
| 821 | b | 1 | 30000 | 
| 4545 | s | 1 |  14 | 
| 1111 | k | 1 |  0 | 
| 1111 | k | 1 |  0 | 
| 1111 | k | 1 | 3445 | 
| 1111 | k | 1 |  0 | 
| 1111 | k | 1 | 35000 | 
| 1111 | k | 6 | 35000 | 
| 123 | a | 1 | 10000 | 
+-------+------+-----+--------+ 
14 rows in set (0.01 sec) 

我使用@rownum但拋出下面的錯誤嘗試

ERROR 1093(HY000):不能指定在FROM子句

嘗試了更新的目標表 'Employees' 中別名,但似乎不工作。

規格:服務器版本:5.5.35-0ubuntu0.12.04.2(Ubuntu的),MyISAM引擎,沒有主鍵

+0

可能的重複[如何刪除重複的行?](http://stackoverflow.com/questions/18932/how-can-i-remove-duplicate-rows) –

+0

rowid似乎不是工作,它說錯誤1054(42S22):未知列'rowid'在'字段列表' – user2630309

回答

0

嘗試:

ALTER IGNORE TABLE Employees 
ADD primary key(`Empid`, `Name`, `Did`, `Salary`); 
ALTER IGNORE TABLE Employees DROP PRIMARY KEY; 

工作演示(在32年5月5日版) :http://sqlfiddle.com/#!2/b22021/3

+0

謝謝噸,它的工作。我一直在嘗試使用一些rownum概念@rownum。 – user2630309

+0

Rownum概念無法工作,因爲MySql在PostGreSQL中沒有提供像Oracle的'rowid'或'ctid'這樣的獨特的rownums。另外一個使用@rownum會話變量的概念很難在刪除中實現,我不知道任何解決方案。 MySql中的實際工作解決方案基於一些獨特的列(主鍵)。 – krokodilko

相關問題