आपकी क्वेरी में समस्याएं:
- आप
range
का उपयोग नहीं कर सकते WHERE क्लॉज में। यह एक उपनाम है और इसे WHERE क्लॉज के बाद ही परिभाषित किया जाएगा। - यहां तक कि अगर आप इसका इस्तेमाल कर सकते हैं, तो
<>
का उपयोग करके संख्याओं के सेट के साथ किसी संख्या की तुलना करने का कोई मतलब नहीं है। . सामान्य तौर पर आपIN(...)
. का उपयोग कर सकते हैं , लेकिन आपके विशेष मामले में आपकोBETWEEN 100000 and 999999
. का उपयोग करना चाहिए औरRANGE
. की आवश्यकता से बचें समारोह। - यदि आप केवल एक संख्या चाहते हैं तो सीमा 1 होनी चाहिए, कुछ यादृच्छिक नहीं। आमतौर पर यादृच्छिक आइटम का चयन करने के लिए आप
ORDER BY RAND()
. का उपयोग करते हैं ।
इस क्वेरी का उपयोग करके देखें:
SELECT phoneNum, 100000 as rangeStart, 999999 AS rangeEnd
FROM phone
WHERE phoneNum NOT BETWEEN 100000 AND 999999
ORDER BY RAND()
LIMIT 1
यदि आप एक संख्या खोजना चाहते हैं जो आपकी तालिका में नहीं है और उपलब्ध संख्याएँ रिक्तीकरण के करीब नहीं हैं (जैसे कि 80% से कम असाइन की गई हैं) एक अच्छा तरीका यह होगा कि यादृच्छिक संख्याएँ उत्पन्न की जाएँ और जाँचें कि क्या उन्हें तब तक असाइन किया जाता है जब तक कि आपको वह नहीं मिल जाता है 'टी.
एक शुद्ध MySQL समाधान मौजूद हो सकता है, लेकिन मुझे लगता है कि इसे कुछ ट्विस्टेड जॉइन, रैंडम और मॉड्यूलस की आवश्यकता है।