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

Bagaimana cara menghasilkan nomor urut dalam tampilan MySQL?

Secara teknis Anda ingin sesuatu seperti ini untuk mensimulasikan peringkat atau nomor baris..

CREATE VIEW table_view 
AS
 SELECT
  *
  , (@row_number := @row_number + 1) AS row_number 
 FROM 
  table
 # Because a SQL table is a unsorted set off data ORDER BY is needed to get stabile ordered results.
 ORDER BY
  table.column ASC 
CROSS JOIN (SELECT @row_number := 0) AS init_user_var  

Anda tidak dapat menggunakan kode SQL ini, Anda akan mendapatkan kesalahan di bawah ini jika Anda mencoba membuat Tampilan dengan variabel pengguna.

Error Code: 1351
View's SELECT contains a variable or parameter

Kode SQL di bawah ini juga memungkinkan untuk menghasilkan row_number. Ini mengasumsikan bahwa Anda memiliki kolom id yang dihasilkan dengan AUTO_INCREMENT. Tetapi subquery adalah subquery yang berkorelasi yang membuat eksekusi sangat lambat pada tabel yang lebih besar karena penghitungan perlu dieksekusi di setiap rekaman.

CREATE VIEW table_view
AS
 SELECT 
  *
  , (SELECT COUNT(*) + 1 FROM table inner WHERE inner.id < outer.id) AS row_number
 FROM 
   table outer

Hanya MySQL 8.0+.

MySQL mendukung fungsi jendela sehingga tidak diperlukan variabel pengguna MySQL untuk mensimulasikan peringkat atau nomor baris.

CREATE VIEW table_view 
AS
 SELECT
  *
 # Because a SQL table is a unsorted set off data ORDER BY is needed to get stabile ordered results.
  , (ROW_NUMBER() OVER (ORDER BY table.column ASC)) AS row_number
 FROM 
  table


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pemetaan JPA:QuerySyntaxException:foobar tidak dipetakan...

  2. JSON_UNQUOTE() – Hapus Kutipan dari Dokumen JSON di MySQL

  3. Sisipkan Android Sqlite jika tidak ada

  4. Berapa banyak kolom tabel database yang terlalu banyak?

  5. Algoritma pembuatan jadwal efisien SQL