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

MySQL में दो कॉलम के फ़ंक्शन द्वारा ORDER BY - एकल क्वेरी में

समाधान: SELECT में गणना और ORDER BY एलियास

दो कॉलम के गणितीय फ़ंक्शन के आधार पर परिणामों को क्रमबद्ध करने के लिए, SELECT सूची में गणना करें और उसके एलियास द्वारा ORDER BY करें।

सिंटैक्स

SELECT (expression_using_col1_and_col2) AS calculation_alias
FROM yourTableName
ORDER BY calculation_alias DESC;

व्यावहारिक उदाहरण

टेबल बनाना और डेटा डालना

mysql> CREATE TABLE orderByAFunctionDemo (
    -> Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -> FirstNumber INT,
    -> SecondNumber INT
    -> );

mysql> INSERT INTO orderByAFunctionDemo(FirstNumber, SecondNumber) VALUES
    -> (10, 4), (45, 78), (23, 10), (67, 237), (12, 90);

क्वेरी: 4*FirstNumber + 5*SecondNumber द्वारा अवरोही क्रम

mysql> SELECT (4*FirstNumber + 5*SecondNumber) AS Calculation
    -> FROM orderByAFunctionDemo
    -> ORDER BY Calculation DESC;

परिणाम

Calculationव्युत्पत्ति
14534×67 + 5×237 = 268 + 1185
5704×45 + 5×78 = 180 + 390
4984×23 + 5×10 = 92 + 50
1424×12 + 5×90 = 48 + 450
604×10 + 5×4 = 40 + 20

उन्नत उपयोग

मूल कॉलम भी दिखाना

SELECT 
    Id, FirstNumber, SecondNumber,
    (4*FirstNumber + 5*SecondNumber) AS Calculation
FROM orderByAFunctionDemo
ORDER BY Calculation DESC;

जटिल फ़ंक्शन

ORDER BY (FirstNumber / NULLIF(SecondNumber, 0)) DESC  -- अनुपात
ORDER BY ABS(FirstNumber - SecondNumber) DESC          -- निरपेक्ष अंतर
ORDER BY SQRT(FirstNumber*FirstNumber + SecondNumber*SecondNumber) DESC  -- यूक्लिडियन दूरी

प्रदर्शन नोट

  • गणना प्रत्येक पंक्ति के लिए की जाती है - बड़े टेबल पर धीमा हो सकता है
  • यदि अक्सर उपयोग करते हैं, तो गणना कॉलम और इंडेक्स जोड़ने पर विचार करें
  • WHERE क्लॉज में समान अभिव्यक्ति का उपयोग करने से इंडेक्स उपयोग नहीं होगा
  1. - MySQL में एकल क्वेरी में कई कॉलम को एक साथ सॉर्ट करना

    GREATEST() फंक्शन का उपयोग करके पंक्ति-वार अधिकतम के आधार पर सॉर्ट करना कई कॉलम सॉर्ट करने के लिए ORDER BY GREATEST() का उपयोग करें। पहले टेबल बनाएं: create table DemoTable1395 ( Value1 int, Value2 int, Value3 int ); Query OK, 0 rows affected (0.79 sec) रिकॉर्ड डालें: insert into DemoTable1395 val

  1. - MySQL में दो टेबल पर एकल SELECT क्वेरी करना (कार्टेशियन उत्पाद)

    MySQL में दो टेबल पर कार्टेशियन उत्पाद (क्रॉस जॉइन) दो टेबल पर बिना जॉइन शर्त के SELECT करने से कार्टेशियन उत्पाद (क्रॉस जॉइन) उत्पन्न होता है: पहली टेबल की प्रत्येक पंक्ति दूसरी टेबल की प्रत्येक पंक्ति के साथ जुड़ती है। परिणाम पंक्तियाँ = पंक्तियाँ_टेबल1 × पंक्तियाँ_टेबल2। उदाहरण: दो असंबंधित टेबल

  1. - MySQL में एक क्वेरी से दो कॉलम कैसे अपडेट करें?

    MySQL में एक ही UPDATE स्टेटमेंट में एकाधिक कॉलम अपडेट करने के लिए, SET क्लॉज़ में कॉलम को कॉमा से अलग करके सूचीबद्ध करें। यह एटॉमिक ऑपरेशन सुनिश्चित करता है और क्वेरी ओवरहेड कम करता है। उदाहरण: FirstName और LastName एक साथ अपडेट करना डेमो टेबल बनाएं: mysql> CREATE TABLE DemoTable1909 ( Id