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

Chuyển đổi MySQL ROW_NUMBER () HẾT PHẦN

MySQL sẽ bắt đầu các hàm cửa sổ suport như row_number() trong phiên bản 8.x ( chưa sẵn sàng sản xuất vào ngày 29 tháng 10 năm 2017 ), cho đến lúc đó, sử dụng @variables là một kỹ thuật để bắt chước hiệu ứng:

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
;

Bạn cần nối 3 trường orderid, invs.invoicenumber, HasClientpaid để bắt chước phân vùng ban đầu của bạn và thứ tự cũng sẽ cần theo 3 cột đó. ORDER BY là điều cần thiết để điều này hoạt động, nếu bạn cần một số thứ tự cuối cùng khác, hãy sử dụng ở trên làm truy vấn con.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL chọn hàng ngày cuối cùng được sắp xếp theo ngày DESC

  2. nhận được số lượng từ cùng một cột trong một bảng mysql?

  3. MySQL SET NAMES gần đầu nhật ký truy vấn chậm

  4. Sql chọn các phần tử phù hợp với mảng và hiển thị chúng thành một hàng

  5. Hibernate không tạo thác