खोज…


संदर्भों

एक SELECT में खंड एक विशिष्ट आदेश है:

SELECT ... FROM ... WHERE ... GROUP BY ... HAVING ...
    ORDER BY ...  -- goes here
    LIMIT ... OFFSET ...;

( SELECT ... ) UNION ( SELECT ... ) ORDER BY ...  -- for ordering the result of the UNION.

SELECT ... GROUP_CONCAT(DISTINCT x ORDER BY ... SEPARATOR ...) ...

ALTER TABLE ... ORDER BY ... -- probably useful only for MyISAM; not for InnoDB

बुनियादी

आदेश द्वारा एक्स

x कोई भी डेटाटाइप हो सकता है।

  • NULLs गैर- NULLs पहले।
  • डिफ़ॉल्ट ASC (निम्नतम से उच्चतम) है
  • घोषणा के COLLATION के अनुसार स्ट्रिंग्स ( VARCHAR , आदि) का आदेश दिया जाता है
  • ENUMs को इसके स्ट्रिंग्स के डिक्लेरेशन ऑर्डर द्वारा ऑर्डर किया जाता है।

आरोही अवरोही

ORDER BY x ASC  -- same as default
ORDER BY x DESC  -- highest to lowest
ORDER BY lastname, firstname  -- typical name sorting; using two columns
ORDER BY submit_date DESC  -- latest first
ORDER BY submit_date DESC, id ASC  -- latest first, but fully specifying order.
  • ASC = ASCENDING , DESC = DESCENDING
  • DESC लिए भी NULLs पहले आते हैं।
  • उपरोक्त उदाहरणों में, INDEX(x) , INDEX(lastname, firstname) , INDEX(submit_date) प्रदर्शन को बेहतर बना सकता है।

लेकिन ... पिछले उदाहरण के अनुसार, ASC और DESC मिलाकर, लाभ के लिए एक समग्र सूचकांक का उपयोग नहीं किया जा सकता है। और न ही INDEX(submit_date DESC, id ASC) मदद करेगा - " DESC " को INDEX घोषणा में वाक्य रचना में मान्यता प्राप्त है, लेकिन इसे नजरअंदाज कर दिया गया।

कुछ टोटके

ORDER BY FIND_IN_SET(card_type, "MASTER-CARD,VISA,DISCOVER") -- sort 'MASTER-CARD' first.
ORDER BY x IS NULL, x  -- order by `x`, but put `NULLs` last.

कस्टम आदेश

SELECT * FROM some_table WHERE id IN (118, 17, 113, 23, 72) 
ORDER BY FIELD(id, 118, 17, 113, 23, 72);

आईडी के निर्दिष्ट क्रम में परिणाम देता है।

आईडी ...
118 ...
17 ...
113 ...
23 ...
72 ...

यदि आईडी पहले से ही सॉर्ट की गई हैं तो उपयोगी है और आपको केवल पंक्तियों को पुनः प्राप्त करने की आवश्यकता है।



Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow