In MySql gebruik je meestal sessievariabelen om de functionaliteit te bereiken:
SELECT @rowid:[email protected]+1 as rowid
FROM table1, (SELECT @rowid:=0) as init
ORDER BY sorter_field
Maar u kunt de tabel waaruit u probeert te verwijderen niet sorteren in subquery's.
UPD :dat wil zeggen dat u een tijdelijke tabel moet maken, de variërende subquery in de tijdelijke tabel moet invoegen en uit de originele tabel moet verwijderen door deze samen te voegen met de tijdelijke tabel (u hebt een unieke rij-ID nodig):
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
Aangezien dat een eenmalige operatie is, zou dit niet te veel overhead met zich mee moeten brengen.