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
यह काम करने के लिए आवश्यक है, अगर आपको किसी अन्य अंतिम आदेश की आवश्यकता है तो उपरोक्त को एक सबक्वायरी के रूप में उपयोग करें।