समस्या:
आप पंक्तियों को तिथि के अनुसार क्रमित करना चाहते हैं।
उदाहरण 1:
exam
टेबल में दो कॉलम होते हैं, subject
और exam_date
।
विषय | परीक्षा_तिथि |
---|---|
गणित | 2019-12-19 |
अंग्रेज़ी | 2020-01-08 |
विज्ञान | 2020-01-05 |
स्वास्थ्य | 2020-01-05 |
कला | शून्य |
आप पंक्तियों को exam_date
. के अनुसार क्रमित करना चाहते हैं ।
समाधान:
SELECT * FROM exam ORDER BY exam_date;
परिणाम इस तरह दिखता है (पंक्तियों को exam_date
. द्वारा आरोही क्रम में क्रमबद्ध किया जाता है ):
विषय | परीक्षा_तिथि |
---|---|
कला | शून्य |
गणित | 2019-12-19 |
विज्ञान | 2020-01-05 |
स्वास्थ्य | 2020-01-05 |
अंग्रेज़ी | 2020-01-08 |
चर्चा:
ORDER BY
का प्रयोग करें कीवर्ड और कॉलम का नाम जिसके द्वारा आप सॉर्ट करना चाहते हैं। इस तरह, आप इस कॉलम के आधार पर डेटा को आरोही क्रम में क्रमबद्ध करेंगे। आप ASC
. का भी उपयोग कर सकते हैं कीवर्ड यह स्पष्ट करने के लिए कि क्रम आरोही है (सबसे पहले की तारीख पहले दिखाई जाती है, नवीनतम तारीख आखिरी दिखाई जाती है, आदि)।
SELECT * FROM exam ORDER BY exam_date ASC;
यदि आप सबसे पहले नवीनतम तिथि और सबसे अंतिम तिथि देखना चाहते हैं, तो आपको अवरोही क्रम में क्रमबद्ध करना होगा। DESC
का उपयोग करें इस मामले में कीवर्ड।
SELECT * FROM exam ORDER BY exam_date DESC;
ध्यान दें कि MySQL में, NULL
आरोही क्रम में छँटाई करते समय s पहले प्रदर्शित होते हैं और अवरोही क्रम में छँटाई करते समय अंतिम होते हैं। साथ ही, समान exam_date
. वाली पंक्तियां यादृच्छिक क्रम में प्रदर्शित होते हैं (आप Science
देख सकते हैं तीसरा और Health
चौथा, या Health
तीसरा और Science
चौथा)।
उदाहरण 2:
exam
तालिका में निम्नलिखित कॉलम हैं:subject
, exam_year
, exam_month
, और exam_day
. महीने नामों में दिए जाते हैं, संख्या में नहीं।
विषय | परीक्षा_वर्ष | परीक्षा_माह | <थ>परीक्षा_दिन|
---|---|---|---|
गणित | 2019 | दिसंबर | 19 |
अंग्रेज़ी | 2020 | जनवरी | 8 |
विज्ञान | 2020 | जनवरी | 5 |
स्वास्थ्य | 2020 | जनवरी | 5 |
कला | शून्य | शून्य | शून्य |
आप परीक्षा तिथि के अनुसार पंक्तियों को क्रमबद्ध करना चाहते हैं।
समाधान:
SELECT * FROM exam ORDER BY STR_TO_DATE(CONCAT(exam_year, ' ', exam_month, ' ', exam_day), '%Y %M %d');
परिणाम इस तरह दिखता है (पंक्तियों को exam_year
. द्वारा आरोही क्रम में क्रमबद्ध किया जाता है , exam_month
, और exam_date
):
विषय | परीक्षा_वर्ष | परीक्षा_माह | <थ>परीक्षा_दिन|
---|---|---|---|
कला | शून्य | शून्य | शून्य |
गणित | 2019 | दिसंबर | 19 |
स्वास्थ्य | 2020 | जनवरी | 5 |
विज्ञान | 2020 | जनवरी | 5 |
अंग्रेज़ी | 2020 | जनवरी | 8 |
चर्चा:
दिनांक के अनुसार क्रमित करने के लिए, वर्ष, माह और दिन के मानों से दिनांक मान बनाएं। ऐसा करने के लिए, STR_TO_DATE() फ़ंक्शन का उपयोग करें। यदि आपके पास 'Year Month Day
. में एक स्ट्रिंग के रूप में संग्रहीत दिनांक है ' प्रारूप में, आप इसे STR_TO_DATE(date_string, '%Y %M %d')
का उपयोग करके किसी तिथि पर कास्ट कर सकते हैं . लेकिन पहले, आपको CONCAT () फ़ंक्शन का उपयोग करके एक स्ट्रिंग बनाने की आवश्यकता है:
CONCAT(exam_year, ' ', exam_month, ' ', exam_day)
CONCAT()
फ़ंक्शन सभी तर्कों को एक स्ट्रिंग में जोड़ता है। आपको संख्याओं को स्ट्रिंग्स में डालने की आवश्यकता नहीं है। चूंकि आप 'Year Month Day
. में एक स्ट्रिंग प्राप्त करना चाहते हैं ' प्रारूप, तर्क हैं exam_year
, exam_month
, exam_day
, और उनके बीच रिक्त स्थान।
फिर, आपको STR_TO_DATE(date_string, '%Y %M %d')
का उपयोग करके इस स्ट्रिंग को दिनांक में बदलने की आवश्यकता है। समारोह। इस फ़ंक्शन का दूसरा तर्क दिनांक स्वरूप है। %Y
वर्ष के लिए खड़ा है, %M
महीने के लिए खड़ा है (इसका पूरा नाम, संख्या नहीं), और %d
दिन के लिए खड़ा है।
STR_TO_DATE(CONCAT(exam_year, ' ', exam_month, ' ', exam_day), '%Y %M %d')
इसका उपयोग ORDER BY
के साथ करें तिथि के अनुसार पंक्तियों को आरोही क्रम में क्रमबद्ध करने के लिए खंड। यदि आप पंक्तियों को अवरोही क्रम में देखना चाहते हैं, तो बस एक DESC
संलग्न करें कीवर्ड, इस तरह:
SELECT * FROM exam ORDER BY STR_TO_DATE(CONCAT(exam_year, ' ', exam_month, ' ', exam_day), '%Y %M %d') DESC;