在没有主键的表中删除重复项(不使用临时表)。

时间:2014-03-19 13:46:54

标签: mysql

我一直在寻找合适的解决方案。以下是我的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引擎,没有主键

1 个答案:

答案 0 :(得分:0)

尝试:

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

工作演示(版本5.5.32):http://sqlfiddle.com/#!2/b22021/3