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. एक ही मान, लघु सिंटैक्स के साथ कई कॉलम अपडेट करें

  2. MySQL कई मानों की तरह

  3. PHP और MySQL फ़ंक्शन डेटाबेस समस्या से अनियंत्रित श्रेणियों को हटाते हैं

  4. MySQL क्वेरी पैरामीटर की संख्या निष्पादित करने के लिए पारित तर्कों से मेल खाती है, लेकिन पायथन सभी तर्कों को परिवर्तित नहीं करता है

  5. MySQL में डिफ़ॉल्ट बाधा कैसे जोड़ें