SQL चयन कथन में ऑर्डर बाय 1 का उद्देश्य क्या है?


154

मैं काम पर कुछ पुराने कोड के माध्यम से पढ़ रहा हूं, और ध्यान दिया है कि एक order by 1खंड के साथ कई विचार हैं । यह क्या पूरा करता है?

उदाहरण:

Create view v_payment_summary AS
SELECT A.PAYMENT_DATE,
       (SELECT SUM(paymentamount)
          FROM payment B
         WHERE PAYMENT_DATE = B.PAYMENT_DATE
           and SOME CONDITION) AS SUM_X,
       (SELECT SUM(paymentamount)
          FROM payment B
         WHERE PAYMENT_DATE = B.PAYMENT_DATE
           and SOME OTHER CONDITION) AS SUM_Y    
FROM payment A    
ORDER BY 1;

5
FYI करें: यह आमतौर पर विचारों में ORDER BY होने के लिए बुरा व्यवहार माना जाता है, जब तक कि आप गारंटी नहीं दे सकते कि दृश्य केवल प्रस्तुति के लिए उपयोग किया जाएगा। यदि आप ORDER BY के साथ किसी अन्य क्वेरी में दृश्य का उपयोग करते हैं तो ORDER BY 2x हो जाएगा क्योंकि यह एक बेकार है।
OMG पॉनीज

3
@ पोम पोनीज़: इसे आम तौर पर ORDER BYए में अवैध होना माना जाता है VIEW। मानक SQL इसकी अनुमति नहीं देता है। SQL सर्वर ने इसे 2005 से गैरकानूनी घोषित कर दिया है। SQL कार्यान्वयन के लिए यह अनुमति देता है कि यह व्यवहार काफी हद तक अनिर्दिष्ट है और सहज ज्ञान युक्त है। दूसरे शब्दों में, निश्चित रूप से बचा जाना चाहिए।
onedaywhen

@onedaywhen: आप गाना बजानेवालों को उपदेश दे रहे हैं, लेकिन MySQL ORDER को विचारों में अनुमति देता है , जैसा कि Oracle IME करता है। यदि TOPमौजूद है, तो SQL सर्वर ORDER की अनुमति देता है और SSMS को जोड़ना पसंद करता है TOP 100 PERCENT
OMG पोंजी

@OMG पॉनीज @ "MySQL ने विचारों में आदेश की अनुमति दी" - MySQL एक CHECKबाधा की अनुमति देता है, CREATE TABLEलेकिन यह वास्तव में इसका सम्मान नहीं करता है - यह वास्तव में कभी भी जाँच नहीं करता है! सवाल यह है कि क्या ये एसक्यूएल उत्पाद हमेशा ऐसे विचारों का सम्मान करते ORDER BYहैं जैसे किसी क्वेरी में उपयोग किए जाने पर, ORDER BYक्या यह दो बार क्रमबद्ध होता है? क्या वे भी व्यवहार का दस्तावेजीकरण करते हैं या क्या आपको इसे पूरा करने के लिए निष्पादन योजनाओं को देखना होगा? मुझे लगता है कि हम जवाब जानते हैं;)
onedaywhen

FYI करें बस के लिए एक और उपयोग की खोज की ORDER BY 1... एक क्रॉस-अप ट्रिक का उपयोग करके जहां आप एक रिक्त उपनाम चाहते हैं। दुर्भाग्य से कोड जैसे टिप्पणी के लिए बहुत बड़ा है इसलिए मैंने इसे FYI से नीचे उत्तर के रूप में पोस्ट किया है।
एंड्रयूडी

जवाबों:


208

यह:

ORDER BY 1

... एक "ऑर्डिनल" के रूप में जाना जाता है - संख्या का चयन स्तंभ में परिभाषित स्तंभों की संख्या के आधार पर स्तंभ के लिए होता है। आपके द्वारा प्रदान की गई क्वेरी में, इसका अर्थ है:

ORDER BY A.PAYMENT_DATE

यह अनुशंसित अभ्यास नहीं है, क्योंकि:

  1. यह स्पष्ट / स्पष्ट नहीं है
  2. यदि कॉलम ऑर्डर बदलता है, तो क्वेरी अभी भी मान्य है, इसलिए आप कुछ ऐसा करने का आदेश देते हैं, जिसका आपने इरादा नहीं किया था

1
मेरा सवाल पूछ रहा है कि क्या ऑर्डिनल्स का उपयोग करने के लिए एक उल्टा था: stackoverflow.com/questions/2253040/…
OMG Ponies

यह केवल sqlटैग है। मानक एसक्यूएल में केवल कॉलम सहसंबंध नाम को OREDER BYक्लॉज में अनुमति दी जाती है, क्योंकि, सिद्धांत रूप में, तालिका सहसंबंध नाम दायरे से बाहर हैं या होना चाहिए ORDER BY PAYMENT_DATE;। बेशक, सभी SQL कार्यान्वयन मानकों के अनुरूप नहीं हैं।
onedaywhen

परीक्षण किया गया और SQL सर्वर में काम कर रहा है;WITH cte AS( SELECT 1 AS Col1, 'z' AS Col2 UNION SELECT 2 AS Col1, 'y' AS Col2 UNION SELECT 3 AS Col1, 'x' AS Col2 ) SELECT Col2, Col1 FROM cte ORDER BY 1
इवानजिन्हो

@OMG पॉनीज़, आपने उल्लेख किया कि यह अनुशंसित अभ्यास नहीं है, इसलिए अगला सबसे अच्छा प्रतिस्थापन क्या होगा? क्यूज़ पूछ रहा हूँ मैं उत्सुक हूँ .. धन्यवाद!
डियान जिन

40

यह उपयोगी है जब आप सेट आधारित ऑपरेटरों जैसे संघ का उपयोग करते हैं

select cola
  from tablea
union
select colb
  from tableb
order by 1;

4
अहा, यह समझ में आता है। यह पहला अच्छा कारण है जो मैंने अब तक देखा है।
गूंज

4
@ लेज़र मैं ऐसा नहीं मानता, एक संघ का प्रदर्शन करने के लिए यह आंतरिक रूप से एक प्रकार का काम करता है, लेकिन यह एक कार्यान्वयन प्रश्न है जो एक तार्किक आउटपुट प्रश्न के विपरीत है और एसक्यूएल की भावना में पंक्तियों को क्रम में आउटपुट करने की आवश्यकता नहीं है। इसके अलावा अगर आप अवरोही क्रमबद्ध करना चाहते हैं तो क्या होगा? तब आप मूल समस्या पर वापस आ गए हैं।
daven11

3
अभी भी ... मैं नहीं बल्कि प्रयोग करेंगेorder by tablea.cola
शहर Shokrani

1
@ShaharShokrani जो काम नहीं करेगा। लेकिन आप कह सकते हैं, मैं टैब के रूप में x से तालिका के अनुसार x से चयन करता हूं;
ओजगुर Ozturk

से * से (सेलेक्ट कोला कोला से टेबला यूनियन सेलेक्ट कर्नल कॉल टेबल से टेबल का चयन करें) क्रम से
hareluya86

8

इसका सीधा मतलब है कि क्वेरी के परिणाम के 1 कॉलम द्वारा दृश्य या तालिका को क्रमबद्ध करना।



7

यह आपके परिणामों को पहले कॉलम द्वारा वापस लौटा देगा। उदाहरण में यह payment_date द्वारा सॉर्ट करेगा।


4

जैसा कि ORDER BY 1पहले कॉलम द्वारा अन्य उत्तरों के आदेशों में उल्लेख किया गया है ।

मैं एक और उदाहरण भर में आया हूँ जहाँ आप इसका उपयोग कर सकते हैं। हमारे पास कुछ क्वेरीज़ हैं जिन्हें ऑर्डर करने के लिए उसी कॉलम का चयन करना होगा। यदि आप Nameनीचे में ऑर्डर करते हैं तो आपको SQL त्रुटि मिलेगी ।

SELECT Name, Name FROM Segment ORDER BY 1

तुम ऐसा क्यों करोगे? उन्हें उर्फ ​​क्यों नहीं। [बहुत देर से टिप्पणी हालांकि]
अब्दुल कय्यूम

1
@abdulqayyum यह वास्तव में चीजों को करने का एक और तरीका है। उपरोक्त उदाहरण बहुत सरल है। कभी-कभी 'नाम' स्तंभ वास्तव में अलग-अलग तालिकाओं से अलग स्तंभ होते हैं जिन्हें आप किसी अन्य तालिका में सम्मिलित कर रहे हैं। उपनामों का एक गुच्छा जोड़ना पढ़ने को और अधिक कठिन बना सकता है। एक और उदाहरण जहां इसका उपयोग किया जाता है, कई अलग-अलग गणनाओं का चयन करते समय और एक-एक करके ऑर्डर करना चाहते हैं - बिना उपनाम की आवश्यकता के। (हालांकि यहां मैं व्यक्तिगत रूप से एक उपनाम पसंद करना चाहूंगा कि यह कहना है कि गणना क्या है)
निकव

-1

और देखें:

http://www.techonthenet.com/sql/order_by.php

द्वारा आदेश के विवरण के लिए। मैंने कुछ सीखा! :)

मैंने अतीत में भी इसका उपयोग किया है जब मैं एक sql स्टेटमेंट में अनिश्चित संख्या में फ़िल्टर जोड़ना चाहता था। मैला मैं जानता हूँ, लेकिन यह काम किया। : पी


-1

नमूना परीक्षण WAMP सर्वर डेटाबेस से यहाँ एक उदाहरण: -

mysql> select * from user_privileges;

| GRANTEE            | TABLE_CATALOG | PRIVILEGE_TYPE          | IS_GRANTABLE |
   +--------------------+---------------+-------------------------+--------------+
| 'root'@'localhost' | def           | SELECT                  | YES          |
| 'root'@'localhost' | def           | INSERT                  | YES          |
| 'root'@'localhost' | def           | UPDATE                  | YES          |
| 'root'@'localhost' | def           | DELETE                  | YES          |
| 'root'@'localhost' | def           | CREATE                  | YES          |
| 'root'@'localhost' | def           | DROP                    | YES          |
| 'root'@'localhost' | def           | RELOAD                  | YES          |
| 'root'@'localhost' | def           | SHUTDOWN                | YES          |
| 'root'@'localhost' | def           | PROCESS                 | YES          |
| 'root'@'localhost' | def           | FILE                    | YES          |
| 'root'@'localhost' | def           | REFERENCES              | YES          |
| 'root'@'localhost' | def           | INDEX                   | YES          |
| 'root'@'localhost' | def           | ALTER                   | YES          |
| 'root'@'localhost' | def           | SHOW DATABASES          | YES          |
| 'root'@'localhost' | def           | SUPER                   | YES          |
| 'root'@'localhost' | def           | CREATE TEMPORARY TABLES | YES          |
| 'root'@'localhost' | def           | LOCK TABLES             | YES          |
| 'root'@'localhost' | def           | EXECUTE                 | YES          |
| 'root'@'localhost' | def           | REPLICATION SLAVE       | YES          |
| 'root'@'localhost' | def           | REPLICATION CLIENT      | YES          |
| 'root'@'localhost' | def           | CREATE VIEW             | YES          |
| 'root'@'localhost' | def           | SHOW VIEW               | YES          |
| 'root'@'localhost' | def           | CREATE ROUTINE          | YES          |
| 'root'@'localhost' | def           | ALTER ROUTINE           | YES          |
| 'root'@'localhost' | def           | CREATE USER             | YES          |
| 'root'@'localhost' | def           | EVENT                   | YES          |
| 'root'@'localhost' | def           | TRIGGER                 | YES          |
| 'root'@'localhost' | def           | CREATE TABLESPACE       | YES          |
| 'root'@'127.0.0.1' | def           | SELECT                  | YES          |
| 'root'@'127.0.0.1' | def           | INSERT                  | YES          |
| 'root'@'127.0.0.1' | def           | UPDATE                  | YES          |
| 'root'@'127.0.0.1' | def           | DELETE                  | YES          |
| 'root'@'127.0.0.1' | def           | CREATE                  | YES          |
| 'root'@'127.0.0.1' | def           | DROP                    | YES          |
| 'root'@'127.0.0.1' | def           | RELOAD                  | YES          |
| 'root'@'127.0.0.1' | def           | SHUTDOWN                | YES          |
| 'root'@'127.0.0.1' | def           | PROCESS                 | YES          |
| 'root'@'127.0.0.1' | def           | FILE                    | YES          |
| 'root'@'127.0.0.1' | def           | REFERENCES              | YES          |
| 'root'@'127.0.0.1' | def           | INDEX                   | YES          |
| 'root'@'127.0.0.1' | def           | ALTER                   | YES          |
| 'root'@'127.0.0.1' | def           | SHOW DATABASES          | YES          |
| 'root'@'127.0.0.1' | def           | SUPER                   | YES          |
| 'root'@'127.0.0.1' | def           | CREATE TEMPORARY TABLES | YES          |
| 'root'@'127.0.0.1' | def           | LOCK TABLES             | YES          |
| 'root'@'127.0.0.1' | def           | EXECUTE                 | YES          |
| 'root'@'127.0.0.1' | def           | REPLICATION SLAVE       | YES          |
| 'root'@'127.0.0.1' | def           | REPLICATION CLIENT      | YES          |
| 'root'@'127.0.0.1' | def           | CREATE VIEW             | YES          |
| 'root'@'127.0.0.1' | def           | SHOW VIEW               | YES          |
| 'root'@'127.0.0.1' | def           | CREATE ROUTINE          | YES          |
| 'root'@'127.0.0.1' | def           | ALTER ROUTINE           | YES          |
| 'root'@'127.0.0.1' | def           | CREATE USER             | YES          |
| 'root'@'127.0.0.1' | def           | EVENT                   | YES          |
| 'root'@'127.0.0.1' | def           | TRIGGER                 | YES          |
| 'root'@'127.0.0.1' | def           | CREATE TABLESPACE       | YES          |
| 'root'@'::1'       | def           | SELECT                  | YES          |
| 'root'@'::1'       | def           | INSERT                  | YES          |
| 'root'@'::1'       | def           | UPDATE                  | YES          |
| 'root'@'::1'       | def           | DELETE                  | YES          |
| 'root'@'::1'       | def           | CREATE                  | YES          |
| 'root'@'::1'       | def           | DROP                    | YES          |
| 'root'@'::1'       | def           | RELOAD                  | YES          |
| 'root'@'::1'       | def           | SHUTDOWN                | YES          |
| 'root'@'::1'       | def           | PROCESS                 | YES          |
| 'root'@'::1'       | def           | FILE                    | YES          |
| 'root'@'::1'       | def           | REFERENCES              | YES          |
| 'root'@'::1'       | def           | INDEX                   | YES          |
| 'root'@'::1'       | def           | ALTER                   | YES          |
| 'root'@'::1'       | def           | SHOW DATABASES          | YES          |
| 'root'@'::1'       | def           | SUPER                   | YES          |
| 'root'@'::1'       | def           | CREATE TEMPORARY TABLES | YES          |
| 'root'@'::1'       | def           | LOCK TABLES             | YES          |
| 'root'@'::1'       | def           | EXECUTE                 | YES          |
| 'root'@'::1'       | def           | REPLICATION SLAVE       | YES          |
| 'root'@'::1'       | def           | REPLICATION CLIENT      | YES          |
| 'root'@'::1'       | def           | CREATE VIEW             | YES          |
| 'root'@'::1'       | def           | SHOW VIEW               | YES          |
| 'root'@'::1'       | def           | CREATE ROUTINE          | YES          |
| 'root'@'::1'       | def           | ALTER ROUTINE           | YES          |
| 'root'@'::1'       | def           | CREATE USER             | YES          |
| 'root'@'::1'       | def           | EVENT                   | YES          |
| 'root'@'::1'       | def           | TRIGGER                 | YES          |
| 'root'@'::1'       | def           | CREATE TABLESPACE       | YES          |
| ''@'localhost'     | def           | USAGE                   | NO           |
+--------------------+---------------+-------------------------+--------------+
85 rows in set (0.00 sec)

और जब यह अतिरिक्त दिया जाता है order by PRIVILEGE_TYPEया दिया जा सकता है order by 3। 3 कॉलम ( PRIVILEGE_TYPE) को वर्णानुक्रम में क्रमबद्ध करते हुए देखें।

mysql> select * from user_privileges order by PRIVILEGE_TYPE;
+--------------------+---------------+-------------------------+--------------+
| GRANTEE            | TABLE_CATALOG | PRIVILEGE_TYPE          | IS_GRANTABLE |
+--------------------+---------------+-------------------------+--------------+
| 'root'@'127.0.0.1' | def           | ALTER                   | YES          |
| 'root'@'::1'       | def           | ALTER                   | YES          |
| 'root'@'localhost' | def           | ALTER                   | YES          |
| 'root'@'::1'       | def           | ALTER ROUTINE           | YES          |
| 'root'@'localhost' | def           | ALTER ROUTINE           | YES          |
| 'root'@'127.0.0.1' | def           | ALTER ROUTINE           | YES          |
| 'root'@'127.0.0.1' | def           | CREATE                  | YES          |
| 'root'@'::1'       | def           | CREATE                  | YES          |
| 'root'@'localhost' | def           | CREATE                  | YES          |
| 'root'@'::1'       | def           | CREATE ROUTINE          | YES          |
| 'root'@'localhost' | def           | CREATE ROUTINE          | YES          |
| 'root'@'127.0.0.1' | def           | CREATE ROUTINE          | YES          |
| 'root'@'::1'       | def           | CREATE TABLESPACE       | YES          |
| 'root'@'localhost' | def           | CREATE TABLESPACE       | YES          |
| 'root'@'127.0.0.1' | def           | CREATE TABLESPACE       | YES          |
| 'root'@'::1'       | def           | CREATE TEMPORARY TABLES | YES          |
| 'root'@'localhost' | def           | CREATE TEMPORARY TABLES | YES          |
| 'root'@'127.0.0.1' | def           | CREATE TEMPORARY TABLES | YES          |
| 'root'@'localhost' | def           | CREATE USER             | YES          |
| 'root'@'127.0.0.1' | def           | CREATE USER             | YES          |
| 'root'@'::1'       | def           | CREATE USER             | YES          |
| 'root'@'localhost' | def           | CREATE VIEW             | YES          |
| 'root'@'127.0.0.1' | def           | CREATE VIEW             | YES          |
| 'root'@'::1'       | def           | CREATE VIEW             | YES          |
| 'root'@'127.0.0.1' | def           | DELETE                  | YES          |
| 'root'@'::1'       | def           | DELETE                  | YES          |
| 'root'@'localhost' | def           | DELETE                  | YES          |
| 'root'@'::1'       | def           | DROP                    | YES          |
| 'root'@'localhost' | def           | DROP                    | YES          |
| 'root'@'127.0.0.1' | def           | DROP                    | YES          |
| 'root'@'127.0.0.1' | def           | EVENT                   | YES          |
| 'root'@'::1'       | def           | EVENT                   | YES          |
| 'root'@'localhost' | def           | EVENT                   | YES          |
| 'root'@'127.0.0.1' | def           | EXECUTE                 | YES          |
| 'root'@'::1'       | def           | EXECUTE                 | YES          |
| 'root'@'localhost' | def           | EXECUTE                 | YES          |
| 'root'@'127.0.0.1' | def           | FILE                    | YES          |
| 'root'@'::1'       | def           | FILE                    | YES          |
| 'root'@'localhost' | def           | FILE                    | YES          |
| 'root'@'localhost' | def           | INDEX                   | YES          |
| 'root'@'127.0.0.1' | def           | INDEX                   | YES          |
| 'root'@'::1'       | def           | INDEX                   | YES          |
| 'root'@'::1'       | def           | INSERT                  | YES          |
| 'root'@'localhost' | def           | INSERT                  | YES          |
| 'root'@'127.0.0.1' | def           | INSERT                  | YES          |
| 'root'@'127.0.0.1' | def           | LOCK TABLES             | YES          |
| 'root'@'::1'       | def           | LOCK TABLES             | YES          |
| 'root'@'localhost' | def           | LOCK TABLES             | YES          |
| 'root'@'127.0.0.1' | def           | PROCESS                 | YES          |
| 'root'@'::1'       | def           | PROCESS                 | YES          |
| 'root'@'localhost' | def           | PROCESS                 | YES          |
| 'root'@'::1'       | def           | REFERENCES              | YES          |
| 'root'@'localhost' | def           | REFERENCES              | YES          |
| 'root'@'127.0.0.1' | def           | REFERENCES              | YES          |
| 'root'@'::1'       | def           | RELOAD                  | YES          |
| 'root'@'localhost' | def           | RELOAD                  | YES          |
| 'root'@'127.0.0.1' | def           | RELOAD                  | YES          |
| 'root'@'::1'       | def           | REPLICATION CLIENT      | YES          |
| 'root'@'localhost' | def           | REPLICATION CLIENT      | YES          |
| 'root'@'127.0.0.1' | def           | REPLICATION CLIENT      | YES          |
| 'root'@'::1'       | def           | REPLICATION SLAVE       | YES          |
| 'root'@'localhost' | def           | REPLICATION SLAVE       | YES          |
| 'root'@'127.0.0.1' | def           | REPLICATION SLAVE       | YES          |
| 'root'@'127.0.0.1' | def           | SELECT                  | YES          |
| 'root'@'::1'       | def           | SELECT                  | YES          |
| 'root'@'localhost' | def           | SELECT                  | YES          |
| 'root'@'127.0.0.1' | def           | SHOW DATABASES          |  YES          |
| 'root'@'::1'       | def           | SHOW DATABASES          | YES          |
| 'root'@'localhost' | def           | SHOW DATABASES          | YES          |
| 'root'@'127.0.0.1' | def           | SHOW VIEW               | YES          |
| 'root'@'::1'       | def           | SHOW VIEW               | YES          |
| 'root'@'localhost' | def           | SHOW VIEW               | YES          |
| 'root'@'localhost' | def           | SHUTDOWN                | YES          |
| 'root'@'127.0.0.1' | def           | SHUTDOWN                | YES          |
| 'root'@'::1'       | def           | SHUTDOWN                | YES          |
| 'root'@'::1'       | def           | SUPER                   | YES          |
| 'root'@'localhost' | def           | SUPER                   | YES          |
| 'root'@'127.0.0.1' | def           | SUPER                   | YES          |
| 'root'@'127.0.0.1' | def           | TRIGGER                 | YES          |
| 'root'@'::1'       | def           | TRIGGER                 | YES          |
| 'root'@'localhost' | def           | TRIGGER                 | YES          |
| 'root'@'::1'       | def           | UPDATE                  | YES          |
| 'root'@'localhost' | def           | UPDATE                  | YES          |
| 'root'@'127.0.0.1' | def           | UPDATE                  | YES          |
| ''@'localhost'     | def           | USAGE                   | NO           |     +--------------------+---------------+-------------------------+--------------+
85 rows in set (0.00 sec)

DEFINITIVELY, एक लंबा उत्तर और स्क्रॉल करने का एक बहुत। इसके अलावा मैं एक पाठ फ़ाइल के लिए प्रश्नों के उत्पादन को पारित करने के लिए कठिन संघर्ष किया। यहाँ है कि कैसे कष्टप्रद into outfileबात का उपयोग किए बिना -

टी ई: / sslllogfile.txt;

और जब आप कर लें, तो लॉगिंग बंद करें-

गुस्सा दिलाना;

आशा है कि यह और अधिक स्पष्टता जोड़ता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.