सारांश :इस ट्यूटोरियल में, आप सीखेंगे कि SQLite ORDER BY
का उपयोग करके किसी क्वेरी के परिणाम सेट को कैसे सॉर्ट किया जाए खंड।
SQLite का परिचय ORDER BY
खंड
SQLite एक अनिर्दिष्ट क्रम में तालिकाओं में डेटा संग्रहीत करता है। इसका मतलब है कि तालिका में पंक्तियाँ उस क्रम में हो भी सकती हैं और नहीं भी, जिस क्रम में उन्हें डाला गया था।
अगर आप SELECT
. का इस्तेमाल करते हैं तालिका से डेटा क्वेरी करने के लिए कथन, परिणाम सेट में पंक्तियों का क्रम अनिर्दिष्ट है।
परिणाम सेट को क्रमबद्ध करने के लिए, आप ORDER BY
जोड़ें SELECT
. का खंड बयान इस प्रकार है:
SELECT
select_list
FROM
table
ORDER BY
column_1 ASC,
column_2 DESC;
Code language: SQL (Structured Query Language) (sql)
ORDER BY
क्लॉज FROM
. के बाद आता है खंड। यह आपको आरोही या अवरोही क्रम में एक या अधिक स्तंभों के आधार पर परिणाम सेट को क्रमबद्ध करने की अनुमति देता है।
इस सिंटैक्स में, आप उस कॉलम का नाम रखते हैं जिसके द्वारा आप ORDER BY
. के बाद सॉर्ट करना चाहते हैं खंड के बाद ASC
या DESC
कीवर्ड।
- द
ASC
कीवर्ड का अर्थ है आरोही। - और
DESC
कीवर्ड का अर्थ है अवरोही।
यदि आप ASC
. निर्दिष्ट नहीं करते हैं या DESC
कीवर्ड, SQLite ASC
. का उपयोग करके परिणाम सेट को सॉर्ट करता है विकल्प। दूसरे शब्दों में, यह परिणाम सेट को डिफ़ॉल्ट रूप से आरोही क्रम में क्रमबद्ध करता है।
यदि आप परिणाम सेट को एकाधिक स्तंभों द्वारा क्रमबद्ध करना चाहते हैं, तो आप दो स्तंभों को अलग करने के लिए अल्पविराम (,) का उपयोग करते हैं। ORDER BY
क्लॉज कॉलम या एक्सप्रेशन का उपयोग करके बाएं से दाएं पंक्तियों को सॉर्ट करता है। दूसरे शब्दों में, ORDER BY
खंड सूची में पहले कॉलम का उपयोग करके पंक्तियों को क्रमबद्ध करता है। फिर, यह दूसरे कॉलम का उपयोग करके क्रमबद्ध पंक्तियों को क्रमबद्ध करता है, और इसी तरह।
आप एक कॉलम का उपयोग करके परिणाम सेट को सॉर्ट कर सकते हैं जो SELECT
. की चयन सूची में प्रकट नहीं होता है खंड।
SQLite ORDER BY
खंड उदाहरण
आइए देखें tracks
प्रदर्शन के लिए नमूना डेटाबेस में तालिका।
मान लीजिए, आप नाम, मिलीसेकंड और एल्बम आईडी कॉलम से डेटा प्राप्त करना चाहते हैं, तो आप निम्न कथन का उपयोग करते हैं:
SELECT
name,
milliseconds,
albumid
FROM
tracks;
Code language: SQL (Structured Query Language) (sql)
इसे आज़माएं
SELECT
कथन जो ORDER BY
. का उपयोग नहीं करता है क्लॉज एक परिणाम सेट देता है जो किसी भी क्रम में नहीं है।
मान लीजिए कि आप AlbumId
. के आधार पर परिणाम सेट को सॉर्ट करना चाहते हैं कॉलम आरोही क्रम में, आप निम्नलिखित कथन का उपयोग करते हैं:
SELECT
name,
milliseconds,
albumid
FROM
tracks
ORDER BY
albumid ASC;
Code language: SQL (Structured Query Language) (sql)
इसे आज़माएं
अब परिणाम सेट को AlbumId
. द्वारा क्रमबद्ध किया गया है स्क्रीनशॉट में दिखाए अनुसार बढ़ते क्रम में कॉलम।
SQLite ASC
का उपयोग करता है डिफ़ॉल्ट रूप से इसलिए आप इसे उपरोक्त कथन में इस प्रकार छोड़ सकते हैं:
SELECT
name,
milliseconds,
albumid
FROM
tracks
ORDER BY
albumid;
इसे आज़माएं
मान लीजिए कि आप सॉर्ट किए गए परिणाम को सॉर्ट करना चाहते हैं (AlbumId
. द्वारा) ) ऊपर Milliseconds
. से अवरोही क्रम में स्तंभ। इस मामले में, आपको Milliseconds
. जोड़ना होगा ORDER BY
. के लिए कॉलम खंड इस प्रकार है:
SELECT
name,
milliseconds,
albumid
FROM
tracks
ORDER BY
albumid ASC,
milliseconds DESC;
Code language: SQL (Structured Query Language) (sql)
इसे आज़माएं
SQLite पंक्तियों को AlbumId
. के अनुसार क्रमित करता है पहले आरोही क्रम में कॉलम। फिर, यह Milliseconds
. द्वारा सेट किए गए सॉर्ट किए गए परिणाम को सॉर्ट करता है अवरोही क्रम में कॉलम।
यदि आप AlbumId
. के साथ एल्बम के ट्रैक देखते हैं 1, आप पाते हैं कि दो कथनों के बीच पटरियों का क्रम बदल जाता है।
SQLite ORDER BY
स्तंभ स्थिति के साथ
कॉलम के नाम निर्दिष्ट करने के बजाय, आप ORDER BY
में कॉलम की स्थिति का उपयोग कर सकते हैं खंड।
उदाहरण के लिए, निम्न कथन ट्रैक को albumid
. दोनों के आधार पर क्रमबद्ध करता है (तीसरा कॉलम) और Milliseconds
(दूसरा कॉलम) आरोही क्रम में।
SELECT
name,
milliseconds,
albumid
FROM
tracks
ORDER BY
3,2;
Code language: SQL (Structured Query Language) (sql)
इसे आज़माएं
नंबर 3 और 2 का मतलब AlbumId
. है और Milliseconds
SELECT
. में दिखाई देने वाली कॉलम सूची में खंड।
NULL को क्रमित करना
डेटाबेस की दुनिया में, NULL विशेष है। यह दर्शाता है कि जानकारी गुम है या डेटा लागू नहीं है।
मान लीजिए आप किसी कलाकार के जन्मदिन को एक टेबल में स्टोर करना चाहते हैं। कलाकार के रिकॉर्ड को सहेजते समय, आपके पास जन्मदिन की जानकारी नहीं होती है।
डेटाबेस में अज्ञात जन्मदिन की जानकारी का प्रतिनिधित्व करने के लिए, आप एक विशेष तिथि का उपयोग कर सकते हैं जैसे 01.01.1900
या एक ''
खाली स्ट्रिंग। हालांकि, ये दोनों मान स्पष्ट रूप से यह नहीं दिखाते हैं कि जन्मदिन अज्ञात है।
इस समस्या को हल करने के लिए NULL का आविष्कार किया गया था। यह इंगित करने के लिए कि जानकारी गुम है, एक विशेष मान का उपयोग करने के बजाय, NULL का उपयोग किया जाता है।
NULL विशेष है क्योंकि आप इसकी तुलना किसी अन्य मान से नहीं कर सकते। सीधे शब्दों में कहें, अगर जानकारी के दो टुकड़े अज्ञात हैं, तो आप उनकी तुलना नहीं कर सकते।
NULL की भी तुलना स्वयं से नहीं की जा सकती है; NULL अपने आप में बराबर नहीं है इसलिए NULL = NULL
हमेशा गलत परिणाम देता है।
जब छँटाई की बात आती है, तो SQLite NULL को किसी भी अन्य मान से छोटा मानता है।
इसका अर्थ है कि यदि आप ASC का उपयोग करते हैं या जब आप DESC का उपयोग करते हैं तो परिणाम सेट के अंत में NULLs परिणाम सेट की शुरुआत में दिखाई देंगे।
SQLite 3.30.0 ने NULLS FIRST
जोड़ा है और NULLS LAST
ORDER BY
. के विकल्प खंड। NULLS FIRST
विकल्प निर्दिष्ट करता है कि NULLs परिणाम सेट की शुरुआत में दिखाई देंगे जबकि NULLS LAST
विकल्प परिणाम सेट के अंत में NULLs रखें।
निम्न उदाहरण ORDER BY
का उपयोग करता है संगीतकारों द्वारा ट्रैक को सॉर्ट करने के लिए क्लॉज:
SELECT
TrackId,
Name,
Composer
FROM
tracks
ORDER BY
Composer;
Code language: SQL (Structured Query Language) (sql)
सबसे पहले, आप देखते हैं कि परिणाम सेट की शुरुआत में एनयूएलएल दिखाई देते हैं क्योंकि SQLite उन्हें सबसे कम मान के रूप में मानता है। जब आप परिणाम को नीचे स्क्रॉल करते हैं, तो आपको अन्य मान दिखाई देंगे:
निम्न उदाहरण NULLS LAST
का उपयोग करता है अन्य मानों के बाद NULLs रखने का विकल्प:
SELECT
TrackId,
Name,
Composer
FROM
tracks
ORDER BY
Composer NULLS LAST;
Code language: SQL (Structured Query Language) (sql)
यदि आप आउटपुट को नीचे स्क्रॉल करते हैं, तो आप देखेंगे कि परिणाम सेट के अंत में NULLs रखे गए हैं:
इस ट्यूटोरियल में, आपने सीखा है कि SQLite ORDER BY
. का उपयोग कैसे किया जाता है एक एकल कॉलम, कई कॉलमों को आरोही और अवरोही क्रम में उपयोग करके परिणाम सेट को सॉर्ट करने के लिए क्लॉज।