在 MySQL 中,Oracle 提供的 rowid 功能並不能直接使用。但是,還有其他方法可以實現資料操作任務的類似功能。
要刪除重複值並像 Oracle 的 rowid情況一樣強加主鍵,您可以請按照以下步驟操作:
使用會話變數:
SELECT @rowid:=@rowid+1 as rowid FROM table1, (SELECT @rowid:=0) as init ORDER BY sorter_field
這將為每行產生一個類似rowid 的唯一識別碼。
建立一個暫時變數表:
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
此方法為MySQL 中缺乏直接rowid 等效項提供了一種解決方法,允許您在沒有主鍵的表上執行數據操作任務。
以上是如何在 MySQL 中複製 Oracle 的 RowID 功能?的詳細內容。更多資訊請關注PHP中文網其他相關文章!