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

MySQL Konversi ROW_NUMBER() LEBIH DARI PARTISI

MySQL akan mulai mendukung fungsi jendela seperti row_number() dalam versi 8.x (belum siap produksi pada 29 Okt 2017 ), sampai saat itu menggunakan @variables adalah teknik untuk meniru efeknya:

SELECT
      @row_num :=IF(@prev_value=concat_ws('',orderid, invs.invoicenumber, HasClientpaid),@row_num+1,1)AS RowNumber
    , orderid
    , invs.[InvoiceID]
    , invs.[InvoiceDate]
    , invs.[InvoiceNumber]
    , invs.[HasClientPaid]
    , @prev_value := concat_ws('',orderid, invs.invoicenumber, HasClientpaid)
FROM InvoiceLineItems Ilt
JOIN Invoices Invs ON Ilt.InvoiceID = invs.InvoiceID
CROSS JOIN (SELECT @row_num :=1,  @prev_value :=0) vars
ORDER BY
      orderid, invs.invoicenumber, HasClientpaid
;

Anda perlu menggabungkan 3 bidang orderid, invs.invoicenumber, HasClientpaid untuk meniru partisi asli Anda, dan urutannya harus dengan 3 kolom itu juga. ORDER BY sangat penting agar ini berfungsi, jika Anda memerlukan pemesanan akhir lainnya, gunakan yang di atas sebagai subquery.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana memulihkan kata sandi root mysql di MacOS

  2. mysql_real_escape_string VS menambahkan bulu mata

  3. MAMP Pro mysql tidak dapat memulai

  4. Bagaimana saya bisa menghasilkan kueri SQL menggunakan SQL::Abstract?

  5. Memperbarui array serial di mysql (tanpa unserialising?)