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