2012-08-15 9 views
9

डालने के लिए MySQL में समतुल्य है। मैं एसक्यूएल स्क्रिप्ट्स में एसक्यूएल स्क्रिप्ट्स को कनवर्ट करने की कोशिश कर रहा हूं जो एसक्यूएल प्रक्रियाओं में उपयोग की जा सकने वाली लिपियों के लिए एक लिंक सेवर के साथ चलाने के लिए है, जिस स्क्रिप्ट पर मैं उपयोग कर रहा हूंROW_NUMBER()

ROW_NUMBER() OVER(ORDER BY [FIELDS]) 

एक प्राथमिक कुंजी है कि ऑटो वृद्धि पर निर्भर नहीं है बनाने के लिए, जब मैं कोशिश करते हैं और एक प्रक्रिया मैं इस त्रुटि मिलती है के रूप में कोड को बचाने

त्रुटि 1064 (42000) के लिए: आप एक त्रुटि है अपने एसक्यूएल सिंटैक्स में: मैन्युअल रूप से '(ऑर्डर द्वारा [FIELDS])' के उपयोग के लिए सही वाक्यविन्यास के लिए आपके MySQL सर्वर संस्करण से संबंधित मैन्युअल जांचें [Lineno]

जाहिर त्रुटि कह रही है कि ROW_NUMBER से अधिक सही कारण मैं थोड़ा हटा दिया और कह रही है कि ROW_NUMBER

हर जगह मैं खोज मैं, लेकिन इस सवाल पूछने लोग कुछ भी नहीं मिलता है अपरिभाषित था एक त्रुटि मिली नहीं है चयन कथन के लिए, INSERT कथन नहीं और अधिकांश समय के जवाब केवल पंक्तियों की संख्या प्राप्त करने या अंतिम आईडी डालने के बारे में हैं, तो मैं उसी डेटा को बनाने के लिए उपयोग कर सकता हूं जो ROW_NUMBER() Microsoft Server

में होगा
+0

यह कह रहा है 'OVER' समारोह अमान्य तर्क है। –

+0

@ कोलेजोहनसन: कभी भी MySQL में नहीं है, मैंने इसे Google में खोजकर चेक किया है और केवल एमएसडीएन के लिंक प्राप्त किए हैं, भले ही तर्क सही था, शायद यह शायद ROW_NUMBER या 2 के बीच एक सिंटेक्स त्रुटि के समान संदेश देगा फ़ंक्शंस ...... और हाँ स्क्रिप्ट माइक्रोसॉफ्ट एसक्यूएल सर्वर में काम करता है क्योंकि मैंने इसे इसमें चलाया है, क्योंकि यह केवल लिंक सर्वर का उपयोग करता है, मैं वास्तव में इस्तेमाल होने के लिए लिंक सर्वर का उपयोग करने से इसे स्क्रिप्ट चला रहा हूं सर्वर में –

+0

मैं पंक्ति संख्या को तालिका में शामिल करने की कोशिश कर रहा हूं, मैं [टैबलेट] मूल्यों (@ रैंक + 1) में इंसर्ट का उपयोग नहीं कर सकता क्योंकि यह मुझे हर बार 1 बार प्राप्त करेगा जिसके लिए अनुमति नहीं है एक प्राथमिक कुंजी और मैंने @row + = 1 –

उत्तर

18

दुर्भाग्यवश, MySQL में ROW_NUMBER() समतुल्य नहीं है लेकिन आप इसे अभी भी बनाकर अनुकरण कर सकते हैं एक साधारण चर जो मूल्य को प्रत्येक पंक्ति में वृद्धि करता है।

उदाहरण:

SET @rank=0; 
SELECT @rank := @rank+1 AS rank, fruit, amount 
FROM  sales 
ORDER BY amount DESC; 
+1

की कोशिश की है यह पंक्ति संख्याओं को वापस नहीं कर रहा है जैसे 1,2,3 ...। यह 1,2,9,11 लौट रहा है ... यह वही नहीं है जो मैं चाहता हूं –

संबंधित मुद्दे