तकनीकी रूप से आप रैंकिंग या पंक्ति संख्या अनुकरण करने के लिए ऐसा कुछ चाहते हैं ..
CREATE VIEW table_view
AS
SELECT
*
, (@row_number := @row_number + 1) AS row_number
FROM
table
# Because a SQL table is a unsorted set off data ORDER BY is needed to get stabile ordered results.
ORDER BY
table.column ASC
CROSS JOIN (SELECT @row_number := 0) AS init_user_var
आप इस SQL कोड का उपयोग नहीं कर सकते हैं यदि आप उपयोगकर्ता चर के साथ एक दृश्य बनाने का प्रयास करते हैं तो आपको नीचे त्रुटि मिलेगी।
Error Code: 1351
View's SELECT contains a variable or parameter
नीचे दिया गया SQL कोड भी row_number उत्पन्न करना संभव बनाता है। यह मानता है कि आपके पास एक id कॉलम है जो AUTO_INCREMENT के साथ उत्पन्न होता है। लेकिन सबक्वेरी एक सहसंबद्ध सबक्वेरी है जो निष्पादन को बड़ी टेबल पर बहुत धीमा कर देती है क्योंकि गिनती को निष्पादित करने की आवश्यकता होती है हर रिकॉर्ड पर।
CREATE VIEW table_view
AS
SELECT
*
, (SELECT COUNT(*) + 1 FROM table inner WHERE inner.id < outer.id) AS row_number
FROM
table outer
केवल MySQL 8.0+।
MySQL विंडो फ़ंक्शंस का समर्थन करता है इसलिए रैंकिंग या पंक्ति संख्या को अनुकरण करने के लिए MySQL के उपयोगकर्ता चर की आवश्यकता नहीं है।
CREATE VIEW table_view
AS
SELECT
*
# Because a SQL table is a unsorted set off data ORDER BY is needed to get stabile ordered results.
, (ROW_NUMBER() OVER (ORDER BY table.column ASC)) AS row_number
FROM
table