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

क्या ROLLUP मॉडिफायर के साथ ORDER BY क्लॉज उपयोग कर सकते हैं?

MySQL में ROLLUP और ORDER BY परस्पर अनन्य (mutually exclusive) हैं - इन्हें एक साथ उपयोग करना अच्छा अभ्यास नहीं है। लेकिन यदि उपयोग करें तो सारांश पंक्तियां उन पंक्तियों के साथ क्रमबद्ध हो जाती हैं जिनसे वे गणना की गई हैं।

मुख्य समस्या: सॉर्ट ऑर्डर तय करता है कि सारांश पंक्तियां कहां दिखाई देंगी।

उदाहरण - ratelist टेबल:

DESC क्रम (सारांश पंक्ति अंत में):

mysql> Select * from (Select sr, SUM(PRICE) AS PRICE from ratelist GROUP BY sr WITH ROLLUP) AS Price ORDER BY Sr DESC;
+------+-------+
| sr   | PRICE |
+------+-------+
| 5    | 250   |
| 4    | 850   |
| 3    | 1005  |
| 2    | 630   |
| 1    | 502   |
| NULL | 3237  |
+------+-------+

ASC क्रम (सारांश पंक्ति शुरुआत में):

mysql> Select * from (Select sr, SUM(PRICE) AS PRICE from ratelist GROUP BY sr WITH ROLLUP) AS Price ORDER BY Sr ASC;
+------+-------+
| sr   | PRICE |
+------+-------+
| NULL | 3237  |
| 1    | 502   |
| 2    | 630   |
| 3    | 1005  |
| 4    | 850   |
| 5    | 250   |
+------+-------+

सिफारिश:

  • WITH ROLLUP के साथ ORDER BY न उपयोग करें
  • यदि क्रमबद्ध परिणाम चाहिए, तो डेराइव्ड टेबल/CTE में WITH ROLLUP करें, फिर बाहरी क्वेरी में ORDER BY
  • या एप्लिकेशन लेयर पर सॉर्टिंग करें

MySQL 8.0+ CTE पैटर्न:

WITH rolled AS (
    SELECT sr, SUM(Price) AS PRICE FROM ratelist GROUP BY sr WITH ROLLUP
)
SELECT * FROM rolled ORDER BY 
    CASE WHEN sr IS NULL THEN 1 ELSE 0 END,  -- सारांश पंक्ति अंत में
    sr;
  1. - MySQL WHERE क्लॉज में संपूर्ण अभिव्यक्ति का उपयोग करना

    SELECT सूची में उपयोग की गई अभिव्यक्ति को WHERE क्लॉज में दोहराना एक उदाहरण देखते हैं और टेबल बनाएं: create table DemoTable1406 ( Value int ); Query OK, 0 rows affected (0.47 sec) रिकॉर्ड डालें: insert into DemoTable1406 values(30); Query OK, 1 row affected (0.11 sec) सभी रिकॉर्ड देखें: select *

  1. - MySQL में पंक्तियों के मान जोड़कर परिणाम सॉर्ट करना

    GROUP BY और ORDER BY से समूहवार योग और क्रम SUM() और GROUP BY से प्रत्येक समूह का योग निकालें, फिर ORDER BY से परिणाम क्रमबद्ध करें। तालिका और डेटा (Chris, 45), (David, 98), (Bob, 58); क्वेरी: नामवार कुल अंक, अवरोही क्रम ORDER BY TotalSum DESC; परिणाम +-------------+----------+ | StudentName

  1. - MySQL में ORDER BY FIELD और ID से कस्टम सॉर्ट और द्वितीयक सॉर्ट

    MySQL में ORDER BY FIELD() का उपयोग करके एक कॉलम को कस्टम क्रम में सॉर्ट करें, फिर दूसरे कॉलम से द्वितीयक सॉर्ट लागू करें। सिंटैक्स SELECT * FROM टेबल_नाम ORDER BY FIELD(कॉलम1, मान1, मान2, ...) DESC/ASC, कॉलम2 DESC/ASC; उदाहरण: Mike को पहले रखें, फिर ID अवरोही क्रम में 1. टेबल बनाएं );