2013-01-16 36 views

Trả lời

3

Hãy thử điều này

DELETE FROM item WHERE GREATEST(0,@num := IF(NAME = @NAME, @num + 1, 0),LEAST(0, LENGTH(@NAME := NAME)))>0 
1

Tái bảng:

RENAME TABLE `testTable` TO `testTable2`; 

CREATE TABLE `testTable` 
SELECT DISTINCT `name` FROM `testTable2`; 

HOẶC Thêm UNIQUE INDEX trên sân của mình.

ALTER IGNORE TABLE `tableName` 
    ADD UNIQUE INDEX (`name`) 
+0

cảm ơn nhưng tôi không muốn áp dụng chỉ mục duy nhất. Tôi chỉ muốn thực hiện truy vấn nên loại bỏ các hàng trùng lặp. – sureyn

+0

@sureyn: nhưng nếu bạn không áp dụng khóa duy nhất, bạn sẽ gặp lại vấn đề tương tự. Tốt hơn là ngăn chặn tình huống đó thay vì dọn dẹp liên tục. –

+0

@a_horse_with_no_name: Bạn đúng nhưng mối quan tâm của tôi là chỉ thực hiện xóa truy vấn để xóa các hàng trùng lặp ngoại trừ một bản ghi. BTW vấn đề của tôi được giải quyết và cảm ơn rất nhiều sự giúp đỡ của bạn. – sureyn

Các vấn đề liên quan