Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

क्या पहचान के साथ कई पंक्तियों को सम्मिलित करते समय ऑर्डर की गारंटी है?

बहुत समान प्रश्न पहले पूछा गया था।

आप एक ORDER BY निर्दिष्ट कर सकते हैं INSERT . में ।

यदि आप ऐसा करते हैं, तो जिस क्रम में IDENTITY जेनरेट किए गए मान निर्दिष्ट ORDER BY . से मेल खाने की गारंटी है INSERT . में ।

अपने उदाहरण का उपयोग करना:

DECLARE @blah TABLE
(
    ID INT IDENTITY(1, 1) NOT NULL,
    Name VARCHAR(100) NOT NULL
);

INSERT INTO @blah (Name)
SELECT T.Name
FROM
    (
        VALUES
        ('Timmy'),
        ('Jonny'),
        ('Sally')
    ) AS T(Name)
ORDER BY T.Name;

SELECT
    T.ID
    ,T.Name
FROM @blah AS T
ORDER BY T.ID;

नतीजा यह है:

+----+-------+
| ID | Name  |
+----+-------+
|  1 | Jonny |
|  2 | Sally |
|  3 | Timmy |
+----+-------+

यानी Name क्रमित कर दिया गया है और इस आदेश के अनुसार आईडी सृजित कर दी गई हैं। यह गारंटी है कि जॉनी के पास सबसे कम आईडी होगी, टिम्मी के पास सबसे ज्यादा आईडी होगी, सैली के बीच आईडी होगी। जेनरेट किए गए आईडी मानों के बीच अंतराल हो सकता है, लेकिन उनके सापेक्ष क्रम की गारंटी है।

यदि आप ORDER BY निर्दिष्ट नहीं करते हैं INSERT . में , फिर परिणामी IDENTITY आईडी को एक अलग क्रम में जनरेट किया जा सकता है।

ध्यान रहे, ORDER BY के साथ भी तालिका में पंक्तियों के वास्तविक भौतिक क्रम की कोई गारंटी नहीं है। INSERT . में , जेनरेट की गई आईडी ही एकमात्र गारंटी है।

एक प्रश्न में इन्टर इनटू को सेलेक्ट के साथ ऑर्डर बाय के साथ करें एमएस से उमाचंदर जयचंद्रन ने कहा:

और उन्होंने आदेश देने का लिंक दिया SQL सर्वर में गारंटी , जहां SQL सर्वर इंजन टीम के कॉनर कनिंघम कहते हैं:

उस पोस्ट में टिप्पणियों में एमएस नॉलेज बेस लेख का लिंक है:का व्यवहार IDENTITY फ़ंक्शन जब SELECT INTO या INSERT के साथ उपयोग किया जाता है .. ऐसे प्रश्नों का चयन करें जिनमें ORDER BY क्लॉज हो , जो इसे और अधिक विवरण में बताता है। यह कहता है:

मैं इस KB आलेख को एक आधिकारिक दस्तावेज़ के रूप में मानूंगा और इस व्यवहार की गारंटी पर विचार करूंगा।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL सर्वर अधिकतम पंक्तियाँ जिन्हें एकल सम्मिलित स्टेटमेंट में सम्मिलित किया जा सकता है

  2. अमान्य कॉलम नाम लेकिन अभी भी काम कर रहा है

  3. SQL सर्वर त्रुटि - HRESULT E_FAIL को कॉल से COM घटक में वापस कर दिया गया है

  4. SQL में किसी स्थानीय चर के लिए डिफ़ॉल्ट मान निर्दिष्ट नहीं कर सकता

  5. एमएस एसक्यूएल सर्वर 2012 में एक वर्चर कॉलम में एक मान की गोलाई?