Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Setara dengan RowID Oracle di MySQL

Di MySql Anda biasanya menggunakan variabel sesi untuk mencapai fungsionalitas:

SELECT @rowid:[email protected]+1 as rowid
FROM table1, (SELECT @rowid:=0) as init
ORDER BY sorter_field

Tetapi Anda tidak dapat mengurutkan tabel yang ingin Anda hapus di subkueri.

UPD :yaitu Anda perlu membuat tabel temp, memasukkan subquery range ke tabel temp dan menghapus dari tabel asli dengan bergabung dengan tabel sementara (Anda akan memerlukan beberapa pengidentifikasi baris unik):

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

Karena itu adalah operasi satu kali, ini seharusnya tidak membawa terlalu banyak overhead.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Query Untuk Membuat Tabel Di MySQL

  2. Lakukan while/loop untuk mendapatkan 10 hasil random

  3. Cara Menginstal WordPress:Perangkat Lunak Server

  4. Permintaan peka huruf besar/kecil MySQL

  5. CURRENT_DATE Contoh – MySQL