का अंतिम रिकॉर्ड पुनर्प्राप्त करें यहां मेरी समस्या है: मेरे पास एक SQL सर्वर डेटाबेस है जिसे emp
कहा जाता है। इसमें employee
तालिका है (userid int
कॉलम के साथ)। मुझे userid
के employee
तालिका में वृद्धि यूजर आईडी मान के साथ अंतिम रिकॉर्ड पुनर्प्राप्त करने की आवश्यकता है। 1 इस समय मैंने इसे अपने जीयूआई पर किया था। तो मैं इसके लिए एक एसक्यूएल क्वेरी कैसे लिखूं?SQL सर्वर तालिका
उत्तर
आपको उपयोगकर्ता आईडी कॉलम मैन्युअल रूप से बढ़ाना नहीं चाहिए, इसके बजाय पहचान बिंदु का उपयोग करें। यह हर नई पंक्ति के लिए स्वचालित रूप से आपके लिए 1 जोड़ देगा।
CREATE TABLE Employees (
UserId INT IDENTITY PRIMARY KEY NOT NULL,
UserName NVARCHAR(255) NOT NULL,
// etc add other columns here
)
तुम सच में वास्तव में उच्चतम userid यह एक बहुत ही सरल प्रश्न है का चयन करने के हों:
SELECT MAX(UserId) + 1
FROM Employees
[संपादित करें]
अपनी टिप्पणी के आधार पर, आप SELECT MAX(UserId) + 1 FROM Employees
क्वेरी का उपयोग करना चाहिए। लेकिन ध्यान रखें कि यह गारंटी नहीं देता कि संख्या आईडी होगी। आमतौर पर जब तक डेटाबेस में रिकॉर्ड सहेजा नहीं जाता है तब तक आप एक आईडी मान नहीं दिखाएंगे।
उच्चतम उपयोगकर्ता आईडी के साथ रिकॉर्ड लौटने के लिए, आप कर सकते हैं:
SELECT TOP 1 userid
FROM employee
ORDER BY userid DESC
या ...
SELECT MAX(userid)
FROM employee
अपनी योजना तो मैन्युअल रूप से उपयोगकर्ता आईडी को बढ़ा देते हैं और एक नए डालने के लिए है उस नई आईडी के साथ रिकॉर्ड करें, मैं ऐसा करने के खिलाफ अनुशंसा करता हूं - क्या होगा अगर 2 प्रक्रियाएं एक ही समय में ऐसा करने का प्रयास करें? इसके बजाए, उपयोगकर्ता आईडी के रूप में पहचान कॉलम का उपयोग करें और बढ़ते क्रमशः आपके लिए
यह आपको अंतिम सम्मिलित रिकॉर्ड देगा, यदि आपके पास पहचान कॉलम नहीं है।
EXECUTE ('DECLARE GETLAST CURSOR DYNAMIC FOR SELECT * FROM [User]')
OPEN GETLAST
FETCH LAST FROM GETLAST
CLOSE GETLAST
DEALLOCATE GETLAST
यदि आपने पहचान सेट की है तो आप निम्न का उपयोग कर सकते हैं।
SELECT top(1) ID from [YourTable] order by ID desc
त्वरित प्रतिक्रिया के लिए समस्या सभी के लिए धन्यवाद –
इस स्थिति में ** वास्तव में ** एक कर्सर (बड़ा बड़ा प्रदर्शन हत्यारा !!) की कोई आवश्यकता नहीं है ..... –
यह आपको अंतिम बार दर्ज किया जाएगा यदि आप ' autoincrement के रूप में कोई आईडी है। तालिका को बदलने का प्रयास करें और परिणाम देखें –
सहेजने से पहले नया उपयोगकर्ता आईडी रखने के लिए, NextId तालिका बनाएं।
उपयोगकर्ता डालने से पहले, NextId से नए मूल्य प्राप्त:
UserId = SELECT Coalesce(NextId, 0) + 1 from NextId
फिर NextID तालिका अद्यतन:
UPDATE NEXTID SET NextId = IserID
और फिर अपने उपयोगकर्ता निर्माण कोड में उस मान का उपयोग
आप अंतराल प्राप्त कर सकते हैं, उनसे बचने के लिए और अधिक जटिल तरीके हैं; लेकिन मुझे लगता है कि यह
प्राप्त करता है यदि आप कोड, एक्सएमएल या डेटा नमूने पोस्ट करते हैं, ** कृपया ** टेक्स्ट एडिटर में उन पंक्तियों को हाइलाइट करें और " कोड नमूने "बटन ({}) संपादक टूलबार पर अच्छी तरह से प्रारूप और वाक्यविन्यास इसे हाइलाइट करने के लिए! –
क्या यह शून्य से 1 का कारण है? – Karel
- 1. SQL सर्वर: तालिका
- 2. SQL सर्वर तालिका
- 3. डेटाबेस तालिका (SQL सर्वर)
- 4. SQL सर्वर तालिका
- 5. कैसे Sql सर्वर 2008 तालिका
- 6. एक SQL सर्वर डेटाबेस तालिका से दूसरे
- 7. कुंजी-मान तालिका पर SQL सर्वर PIVOT
- 8. SQL सर्वर अप्रयुक्त, लेकिन आवंटित तालिका स्थान
- 9. SQL सर्वर तालिका निर्माण दिनांक क्वेरी
- 10. मैं एक ही तालिका (SQL सर्वर)
- 11. SQL सर्वर धीमी बड़ी तालिका से चुनें
- 12. SQL तालिका
- 13. SQL सर्वर
- 14. SQL सर्वर
- 15. SQL सर्वर
- 16. SQL सर्वर
- 17. SQL सर्वर
- 18. SQL सर्वर
- 19. SQL सर्वर
- 20. SQL सर्वर -
- 21. SQL सर्वर
- 22. SQL सर्वर
- 23. SQL सर्वर
- 24. SQL सर्वर
- 25. SQL सर्वर
- 26. SQL सर्वर
- 27. SQL सर्वर
- 28. SQL सर्वर
- 29. SQL सर्वर
- 30. SQL सर्वर
आपके त्वरित भरोसेमंद जेके के लिए धन्यवाद। लेकिन मेरी आवश्यकता यह नहीं है। मेरे गुई के पास नया emloyee नामक एक रूप है। इसलिए एक टेक्स्ट फ़ील्ड है जो यह उपयोगकर्ता आईडी को emp table से दिखाता है। जब क्लिक करें नया कर्मचारी मैं उस टेस्ट वैल को एएमपी आईडी +1 के अंतिम मान के रूप में प्रदर्शित करना चाहता हूं। –
यदि आपको यह दिखाने की ज़रूरत है कि नए कर्मचारी का आईडी वास्तव में कर्मचारी को जोड़ने से पहले होगा तो उपर्युक्त क्वेरी का उपयोग करें: 'MAX से चुनें (उपयोगकर्ता आईडी) + कर्मचारियों से 1। लेकिन एक मौका है कि नया कर्मचारी वास्तव में सहेजा जाने पर आईडी नंबर नहीं होगा। –