2014-03-19 5 views
0

나는 적절한 해결책을 찾고자했습니다. 다음은 내 테이블입니다. 임시 테이블을 사용하고 싶지 않습니다. 나에게기본 키가없는 테이블에서 중복 제거 (임시 테이블을 사용하지 않음).

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) : 당신은 시도

에서 업데이트 대상 테이블 '직원'을 지정할 수 없습니다 별칭이지만 작동하지 않는 것 같습니다.

사양 : Server 버전 : 5.5.35-0ubuntu0.12.04.2 (우분투), MYISAM 엔진, 기본 키

+0

[중복 행을 어떻게 제거 할 수 있습니까?] (http://stackoverflow.com/questions/18932/how-can-i-remove-duplicate-rows) –

+0

rowid가 아닌 것 같습니다. 작동, 그것은 말합니다 1054 오류 (42S22) : '필드 목록'알 수없는 열 'rowid' – user2630309

답변

0

시도 : (버전 5.5.32)에

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

근무 데모 : http://sqlfiddle.com/#!2/b22021/3

+0

고마워요 톤, 작동 중입니다. 나는 어떤 rownum 개념 @rownum를 사용하여 노력 해왔다. – user2630309

+0

MySQL은 PostgreSQL에서 오라클의'rowid' 또는'ctid'와 같은 고유 한 rownum을 제공하지 않으므로 Rownum 개념은 작동하지 않습니다. 또한 @rownum 세션 변수를 사용하는 개념은 삭제에서 구현하기가 어렵지만 어떤 해결책을 모릅니다. 실제로 MySql에서 작동하는 솔루션은 고유 한 열 (기본 키)을 기반으로합니다. – krokodilko

관련 문제