Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

MySQL व्यू में अनुक्रम संख्या कैसे उत्पन्न करें?

तकनीकी रूप से आप रैंकिंग या पंक्ति संख्या अनुकरण करने के लिए ऐसा कुछ चाहते हैं ..

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. पीडीओ तैयार बयानों का उपयोग करते समय त्रुटि और क्वेरी में LIMIT

  2. MYSQL टिनीब्लॉब बनाम लॉन्गब्लॉब

  3. त्रुटि:अप्राप्य प्रकार:'तानाशाह'

  4. MySQL शीर्ष-एन रैंकिंग और शेष समान समूह का योग

  5. MySQL फ़ेच टाइम ऑप्टिमाइज़ेशन