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

चयन करें * INTO SQL Server 2008 में ORDER BY रखता है लेकिन 2012 नहीं

select * from #result . का इस्तेमाल करके आप कैसे बता सकते हैं कि टेबल के अंदर ऑर्डर क्या है? ? select . में ऑर्डर की कोई गारंटी नहीं है क्वेरी।

हालाँकि, SQL Fiddle पर परिणाम भिन्न हैं। यदि आप गारंटी देना चाहते हैं कि परिणाम समान हैं, तो प्राथमिक कुंजी जोड़ें। फिर प्रविष्टि आदेश की गारंटी है:

CREATE TABLE MyTable(Name VARCHAR(50), SortOrder INT)
INSERT INTO MyTable SELECT 'b', 2 UNION ALL SELECT 'c', 3 UNION ALL SELECT 'a', 1 UNION ALL SELECT 'e', 5 UNION ALL SELECT 'd', 4


select top 0 * into result from MyTable;

alter table Result add id int identity(1, 1) primary key;

insert into Result(name, sortorder)
    SELECT * FROM MyTable
    ORDER BY SortOrder;

मैं अब भी select * from Result . करने से घृणा करता हूं इसके बा। लेकिन हाँ, यह उन्हें SQL Server 2008 और 2012 दोनों में सही क्रम में लौटाता है। इतना ही नहीं, लेकिन क्योंकि SQL सर्वर गारंटी देता है कि प्राथमिक कुंजी उचित क्रम में डाली गई है, रिकॉर्ड भी सही क्रम में होने की गारंटी है यह मामला।

लेकिन । . . सिर्फ इसलिए कि रिकॉर्ड पृष्ठों पर एक विशेष क्रम में हैं इसका मतलब यह नहीं है कि उन्हें उस क्रम में पुनर्प्राप्त किया जाएगा, जिसमें कोई order by नहीं होगा खंड।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. 1 कॉलम के टेबल चेंज वैल्यू को कॉपी करें और उसी टेबल में डालें

  2. चेतावनी प्राप्त करना:कुल या अन्य सेट ऑपरेशन द्वारा शून्य मान समाप्त हो गया है

  3. टीसीपी/आईपी के साथ SQL सर्वर 2008 से कनेक्ट करें

  4. वैसे भी चयन कथन के लिए SQL सर्वर DDL ट्रिगर बनाने के लिए?

  5. एसक्यूएल सर्वर 2008 - फुलटेक्स्ट राउंडिंग मनी वैल्यू?