Trong MySql bạn thường sử dụng các biến session để đạt được các chức năng:
SELECT @rowid:[email protected]+1 as rowid
FROM table1, (SELECT @rowid:=0) as init
ORDER BY sorter_field
Nhưng bạn không thể làm cho các loại trên bàn bạn đang cố gắng xóa từ trong truy vấn con.
UPD: đó là bạn sẽ cần phải tạo ra một bảng tạm thời, chèn subquery khác nhau vào bảng tạm thời và xóa từ bảng gốc bằng cách tham gia với các bảng tạm thời (bạn sẽ cần một số nhận dạng hàng độc đáo):
CREATE TEMPORARY TABLE duplicates ...
INSERT INTO duplicates (rowid, field1, field2, some_row_uid)
SELECT
@rowid:=IF(@f1=field1 AND @f2=field2, @rowid+1, 0) as rowid,
@f1:=field1 as field1,
@f2:=field2 as field2,
some_row_uid
FROM testruns t, (SELECT @rowid:=NULL, @f1:=NULL, @f2:=NULL) as init
ORDER BY field1, field2 DESC;
DELETE FROM my_table USING my_table JOIN duplicates
ON my_table.some_row_uid = duplicates.some_row_uid AND duplicates.rowid > 0
Vì đó là thao tác một lần, điều này không được mang quá nhiều chi phí.
Tôi nghĩ bạn đã đọc sai truy vấn. Nó sẽ chỉ xóa các bản sao. –