Mysql
 sql >> база данни >  >> RDS >> Mysql

MySQL Преобразуване ROW_NUMBER() НАД ДЯЛ

MySQL ще започне да поддържа прозоречни функции като row_number() във версия 8.x (все още не е готова за производство към 29 октомври 2017 г. ), дотогава използването на @variables е техника за имитиране на ефекта:

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
;

Трябва да свържете 3-те полета orderid, invs.invoicenumber, HasClientpaid за да имитира оригиналното ви разделяне и подреждането ще трябва да бъде и по тези 3 колони. ORDER BY е от съществено значение, за да работи това, ако имате нужда от друго окончателно подреждане, използвайте горното като подзаявка.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Dapper MySQL върната стойност

  2. В ''mysql'' мениджъра на pid файла излезте без актуализиращ файл

  3. JSON кодиране на MySQL резултати

  4. MySQL Вмъкване и присъединяване

  5. MySQL не актуализира information_schema, освен ако не стартирам ръчно ANALYZE TABLE `myTable`