sql server - एसक्यूएल सर्वर, स्वत: उत्पन्न पंक्ति आईडी के साथ चयन कथन




sql-server (6)

क्या किसी को यादृच्छिक पंक्ति नंबर निर्मित SQL Server 2000 उत्पन्न करने के लिए उपयोग किए गए फ़ंक्शन नाम को याद किया जाता है?


आप इसे सीधे SQL2000 में, माइक्रोसॉफ्ट के पेज के अनुसार कर सकते हैं: http://support.microsoft.com/default.aspx?scid=kb;en-us;186133

 select rank=count(*), a1.au_lname, a1.au_fname
   from authors a1, authors a2
   where a1.au_lname + a1.au_fname >= a2.au_lname + a2.au_fname
   group by a1.au_lname, a1.au_fname
   order by rank

इस दृष्टिकोण के साथ एकमात्र समस्या यह है कि (जैसा कि जेफ एसक्यूएल सर्वर सेंट्रल पर कहता है) यह त्रिकोणीय सम्मिलित है इसलिए, यदि आपके पास दस रिकॉर्ड हैं तो यह तेज़ हो जाएगा, यदि आपके पास एक हजार रिकॉर्ड हैं तो यह धीमा हो जाएगा, और एक लाख रिकॉर्ड के साथ यह कभी भी पूरा नहीं हो सकता!

त्रिकोणीय जुड़ने की बेहतर व्याख्या के लिए यहां देखें: http://www.sqlservercentral.com/articles/T-SQL/61539/


क्या यह शायद आप के लिए क्या देख रहे हैं?

चयन करें NEWID () * तालिका से


पहचान (इंट, 1, 1) ऐसा करना चाहिए, यदि आप किसी चयन में कर रहे हैं SQL 2000 में, मैं सिर्फ परिणामों को एक अस्थायी तालिका में डालता हूं और क्वेरी करता हूं कि afterwords


यह SQL Server 2008 में काम करेगा

select  top 100 ROW_NUMBER() OVER (ORDER BY tmp.FirstName) ,* from tmp

चियर्स


Select (Select count(y.au_lname) from dbo.authors y
where y.au_lname + y.au_fname <= x.au_lname + y.au_fname) as Counterid,
x.au_lname,x.au_fname from authors x group by au_lname,au_fname
order by Counterid --Alternatively that can be done which is equivalent as above..

यहां एक सरल विधि है, जो इन्हें आदेश दिए जाने के बाद पंक्तियों में शुमार है, अर्थात आपकी तालिका में डाला गया है। आपके चयन कथन में केवल फ़ील्ड जोड़ें

ROW_NUMBER() OVER (ORDER BY CAST(GETDATE() AS TIMESTAMP)) AS RowNumber.




sql-server