Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> MySQL

MySQL में विशिष्ट मान को पहले दिखाकर बाकी तारीख के अनुसार क्रमबद्ध करें

MySQL में किसी विशिष्ट मान वाली पंक्ति को परिणाम सेट में सबसे पहले दिखाने और शेष पंक्तियों को किसी अन्य कॉलम (जैसे तारीख) के अनुसार क्रमबद्ध करने के लिए, ORDER BY में बूलियन एक्सप्रेशन का उपयोग करें।

उदाहरण: 'David' को पहले दिखाएं, बाकी ShippingDate द्वारा क्रमबद्ध

डेमो टेबल बनाएं:

mysql> CREATE TABLE DemoTable1932 (
    UserName VARCHAR(20),
    ShippingDate DATE
);

डेटा इन्सर्ट करें:

mysql> INSERT INTO DemoTable1932 VALUES
('Chris', '2018-10-12'),
('David', '2019-04-11'),
('Mike', '2016-12-04'),
('Carol', '2017-12-26');

डेटा:

+----------+--------------+
| UserName | ShippingDate |
+----------+--------------+
| Chris    | 2018-10-12   |
| David    | 2019-04-11   |
| Mike     | 2016-12-04   |
| Carol    | 2017-12-26   |
+----------+--------------+

क्वेरी:

mysql> SELECT * FROM DemoTable1932
ORDER BY UserName = 'David' DESC, ShippingDate;

आउटपुट (David पहले, बाकी तारीख ASC):

+----------+--------------+
| UserName | ShippingDate |
+----------+--------------+
| David    | 2019-04-11   |
| Mike     | 2016-12-04   |
| Carol    | 2017-12-26   |
| Chris    | 2018-10-12   |
+----------+--------------+

व्याख्या

  1. UserName = 'David': बूलियन एक्सप्रेशन, David के लिए TRUE (1), अन्य के लिए FALSE (0)
  2. DESC: TRUE (1) को FALSE (0) से पहले रखता है → David शीर्ष पर
  3. ShippingDate: शेष पंक्तियों (0 ग्रुप) के लिए द्वितीयक क्रम - ASC डिफ़ॉल्ट

सामान्य पैटर्न

-- एकाधिक प्राथमिकता मान
ORDER BY (status IN ('urgent', 'high')) DESC, created_at

-- केस स्टेटमेंट के साथ बहु-स्तरीय प्राथमिकता
ORDER BY CASE priority
    WHEN 'critical' THEN 1
    WHEN 'high' THEN 2
    WHEN 'normal' THEN 3
    ELSE 4
END, created_at

उपयोग के मामले

  • पिन की गई/फीचर्ड आइटम शीर्ष पर
  • वर्तमान यूज़र के रिकॉर्ड पहले, बाकी तारीख के अनुसार
  • विशिष्ट श्रेणी प्राथमिकता, फिर कालानुक्रमिक
  • खोज परिणाम: सटीक मिलान पहले, फिर फजी मिलान

प्रदर्शन

  • बूलियन एक्सप्रेशन इंडेक्स उपयोग नहीं रोकता (द्वितीयक क्रम इंडेक्स उपयोग कर सकता है)
  • फाइलसॉर्ट तब होता है जब प्राथमिक क्रम इंडेक्स से मेल नहीं खाता
  • बड़े डेटासेट के लिए, प्राथमिकता कॉलम पर इंडेक्स बनाएं

यह तकनीक सरल, पठनीय है, और एप्लिकेशन कोड में परिणाम सेट मर्ज करने की आवश्यकता से बचाती है।

  1. - MySQL में तिथि रिकॉर्ड से तिथि खोजने का सबसे तेज़ तरीका

    BETWEEN ऑपरेटर का उपयोग करके तिथि रेंज खोज सबसे तेज़ और आसान तरीका MySQL BETWEEN कीवर्ड का उपयोग करना है। पहले टेबल बनाएं: create table DemoTable1413 ( EmployeeName varchar(20), EmployeeJoiningDate datetime ); Query OK, 0 rows affected (0.45 sec) रिकॉर्ड डालें: insert into DemoTable1413 values(Car

  1. - MySQL तालिका में प्रत्येक मान के लिए अधिकतम (MAX) कैसे चुनें?

    MySQL में GROUP BY और MAX() का उपयोग करके प्रत्येक समूह (जैसे देश) के लिए अधिकतम मान (जैसे जनसंख्या) प्राप्त किया जा सकता है। उदाहरण देश जनसंख्या तालिका: mysql> CREATE TABLE DemoTable (CountryName VARCHAR(20), Population INT); mysql> INSERT INTO DemoTable VALUES (US, 560), (UK, 10090), (UK, 8

  1. - MySQL में पहले तीन पंक्तियों के लिए कस्टम मान सेट करना

    ORDER BY और LIMIT से पहली N पंक्तियां अपडेट करें पहली तीन पंक्तियों के लिए एक विशिष्ट मान सेट करने के लिए ORDER BY और LIMIT 3 का उपयोग करें। टेबल बनाएं और डेटा डालें: mysql> create table DemoTable1968 ( Id int NOT NULL AUTO_INCREMENT PRIMARY KEY, Name varchar(20) ); Query OK, 0 rows affected (0.0