In MySQL ist die von Oracle bereitgestellte RowID-Funktion nicht direkt verfügbar. Es gibt jedoch alternative Ansätze, um eine ähnliche Funktionalität für Datenmanipulationsaufgaben zu erreichen.
Sie können doppelte Werte entfernen und einen Primärschlüssel wie im Rowid-Fall von Oracle festlegen Befolgen Sie diese Schritte:
Verwenden Sie eine Sitzung Variable:
SELECT @rowid:=@rowid+1 as rowid FROM table1, (SELECT @rowid:=0) as init ORDER BY sorter_field
Dies generiert eine rowid-ähnliche eindeutige Kennung für jede Zeile.
Erstellen Sie eine temporäre Tabelle:
CREATE TEMPORARY TABLE duplicates ...
Bereichsunterabfrage in temporäre einfügen Tabelle:
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;
Duplikate löschen:
DELETE FROM my_table USING my_table JOIN duplicates ON my_table.some_row_uid = duplicates.some_row_uid AND duplicates.rowid > 0
Dieser Ansatz bietet eine Problemumgehung für das Fehlen eines direkten Rowid-Äquivalents in MySQL, das es Ihnen ermöglicht, Datenmanipulationsaufgaben an Tabellen ohne Primärschlüssel durchzuführen.
Das obige ist der detaillierte Inhalt vonWie kann ich die RowID-Funktionalität von Oracle in MySQL replizieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!