2012-03-24 15 views
5

तो जब आप LIMIT क्लॉज में ऋणात्मक मान का उपयोग करते हैं तो क्या होता है? क्या नकारात्मक नतीजे होंगे (मामूली पन इरादा)?MySQL LIMIT के लिए ऋणात्मक मान का उपयोग करने से क्या करता है?

मुझे इस पर कोई दस्तावेज नहीं दिख रहा है, और MySQL फ़ोरम, जैसा कि मुझे याद है, sux।

पृष्ठभूमि: मैं MySQL CE 5.5.20 का उपयोग कर रहा हूं। मैंने एक संग्रहीत प्रक्रिया लिखी है जो एक int पैरामीटर लेती है और इसे LIMIT क्लॉज के लिए उपयोग करती है। अगर मैं चाहता था तो मुझे सभी पंक्तियों को वापस करने का एक तरीका चाहिए, इसलिए मैंने अपनी स्टोर प्रक्रिया/दिनचर्या में सीमा पैरामीटर के लिए -1 में गुजरने की कोशिश की, और यह काम किया।

+0

यदि आप वाकई वास्तव में एक सीमा खंड रखना चाहते हैं तो 1 के बजाय एक बहुत बड़ा पूर्णांक का उपयोग क्यों न करें? –

उत्तर

0

MySQL के अन्य संस्करणों पर इसका उपयोग करते समय, यह एक त्रुटि उत्पन्न कर सकता है।

The error in MySQL

3

documentation के अनुसार, यह एक गैर नकारात्मक पूर्णांक

सीमा खंड SELECT कथन द्वारा वापस पंक्तियों की संख्या विवश किया जा सकता है किया जाना चाहिए। LIMIT में एक या दो संख्यात्मक तर्क होते हैं, जो दोनों गैर-अंकीय पूर्णांक स्थिरांक (तैयार कथन का उपयोग करते समय छोड़कर) होना चाहिए।

यह क्या आप अनुभव कर रहे एक गैर-दस्तावेजी बग, कि mysql में है अगर मापदंडों क्या प्रलेखन की आवश्यकता के अनुरूप नहीं कर रहे हैं एक त्रुटि फेंक चाहिए की तरह मेरे लिए लग रहा है।

मेरा सुझाव आपकी संग्रहीत प्रक्रिया में सिंटैक्टिक रूप से सही एसक्यूएल का उपयोग करना होगा। हालांकि आप सभी को दिखाने के लिए अभी भी ध्वज के रूप में एक नकारात्मक int का उपयोग कर सकते हैं। कुछ इस तरह की

IF myparam >= 0 THEN 
    SELECT * FROM `mytable` LIMIT myparam; 
ELSE 
    SELECT * FROM `mytable`; 
END IF; 
संबंधित मुद्दे