हटाना समझाने मूल रूप से मैं ऐसा करना चाहते हैं:कृपया इस शीर्ष 100 SQL सिंटैक्स
delete top(100) from table order by id asc
लेकिन एमएस एसक्यूएल इस स्थिति
आम समाधान यह हो रहा है में आदेश अनुमति नहीं देता:
DELETE table WHERE id IN(SELECT TOP (100) id FROM table ORDER BY id asc)
लेकिन मैं यह भी इस विधि here पाया:
delete table from (select top (100) * from table order by id asc) table
जिसमें एक बेहतर अनुमानित निष्पादन योजना (74:26) है। दुर्भाग्य से मैं वास्तव में वाक्यविन्यास को समझ नहीं पा रहा हूं, कृपया कोई मुझे यह समझा सकता है?
हमेशा एक ही परिणाम प्राप्त करने के लिए किसी भी अन्य तरीकों में रुचि रखते हैं।
संपादित करें: मुझे अभी भी यह नहीं मिल रहा है मुझे डर है, मैं क्वेरी को पढ़ने में सक्षम होना चाहता हूं क्योंकि मैंने पहले दो को पढ़ा है जो व्यावहारिक रूप से अंग्रेजी हैं। मेरे लिए ऊपर प्रश्नों हैं:
delete the top 100 records from table, with the records ordered by id ascending
delete the top 100 records from table where id is anyone of (this lot of ids)
delete table from (this lot of records) table
मैं नहीं बदल सकते तीसरे एक तार्किक अंग्रेजी वाक्य में से एक है ... मैं क्या मैं कैसे में इस मोड़ "तालिका से हटाना करता है पर पाने के लिए कोशिश कर रहा हूँ लगता है (इस रिकॉर्ड के बहुत सारे) "। 'से' एक अजीब स्थिति में प्रतीत होता है और 'टेबल' का दूसरा उल्लेख तार्किक रूप से अनिवार्य है (मेरे लिए)।
मैं तीसरा उदाहरण जो "subtable मेज से तालिका हटाएँ" मेरे लिए पढ़ता के साथ अपने 4 वाक्यविन्यास में से एक से मेल नहीं कर सकते हैं। कृपया प्रश्न में मेरा संपादन देखें। – Patrick
@ पैट्रिक: आप इसे अधिक से अधिक तार्किक रूप से पढ़ने के लिए वैकल्पिक 'से' अपनी क्वेरी (ऊपर तीसरे और चौथे रूप के बीच का अंतर) जोड़ सकते हैं। मैंने उपरोक्त रूपों को अधिक वर्णनात्मक बनाने के लिए समायोजित किया। – Guffa
@ पैट्रिक: क्वेरी को अंग्रेजी में वर्णित किया जा सकता है "इसके रिकॉर्ड से मिलान करने वाले तालिका से सभी रिकॉर्ड हटाएं (इस तालिका के 'रिकॉर्ड्स' के बहुत सारे रिकॉर्ड)।" ध्यान दें कि क्वेरी में अंतिम "तालिका" उपनाम है, न कि तालिका का वास्तविक नाम। – Guffa