Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Tương đương với RowID của Oracle trong MySQL

Trong MySql, bạn thường sử dụng các biến phiên để sử dụng 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ể sắp xếp trên bảng mà bạn đang cố gắng xóa khỏi các truy vấn con.

CẬP NHẬT :nghĩa là bạn sẽ cần tạo bảng tạm thời, chèn truy vấn con khác nhau vào bảng tạm thời và xóa khỏi bảng gốc bằng cách kết hợp với bảng tạm thời (bạn sẽ cần một số định danh hàng duy nhất):

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à hoạt động một lần, điều này sẽ không mang lại quá nhiều chi phí.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tham gia các bảng từ hai máy chủ khác nhau

  2. MySQL JOIN với LIMIT 1 trên bảng đã tham gia

  3. Cột không xác định trong mệnh đề Where

  4. Người dùng hiển thị MySQL

  5. Tìm kiếm mysql trong PHP nhiều bảng bằng cách sử dụng một từ khóa