चूंकि चयन एक परमाणु ऑपरेशन है, मुझे नहीं लगता कि एक आसान समाधान है। मुझे दो अलग-अलग समस्याएं भी दिखाई देती हैं जिन्हें हल करने की आवश्यकता है:
एक दिखाए गए को दोहराए बिना एक पंक्ति का चयन करना। मूल रूप से आपको कहीं दिखाई गई अंतिम पंक्ति को संग्रहीत करने की आवश्यकता है। यदि आपके पास कुछ एप्लिकेशन है, जो वर्तमान स्थिति को संग्रहीत करता है, तो यह एक विकल्प हो सकता है, इसे बाहरी चर के रूप में सहेजना। स्केच समाधान MySQL 5.0+ में किया जाता है:
पहले एक स्टेटमेंट तैयार करें जिसे बाद में निष्पादित किया जाएगा और क्वेरी के लिए एक प्रारंभिक स्थिति निर्धारित की जाएगी:
PREPARE STMT FROM 'SELECT id, name FROM customer LIMIT ?, 1';
SET @pos = 0;
आप एक विश्वसनीय परिणाम प्राप्त करने के लिए एक डिफ़ॉल्ट क्रम जोड़ना चाह सकते हैं। हर बार जब आप एक पंक्ति प्राप्त करना चाहते हैं, तो कथन को
द्वारा निष्पादित करें।EXECUTE STMT USING @pos;
SELECT count(*) FROM customer INTO @max;
SET @pos=(@pos+1)%@max;
दूसरी बात यह है कि आप एक यादृच्छिक स्थिति पढ़ना चाहते हैं। एकमात्र समाधान जो मैं अभी देख रहा हूं, वह एक अस्थायी तालिका बनाना है जो या तो यादृच्छिक रूप से आदेशित ग्राहक से सामग्री रखता है या आप 0[email protected] और अस्थायी तालिका से मुख्य तालिका में वर्तमान स्थिति पढ़ें। यदि आपके पास MySQL के बाहर कोई एप्लिकेशन है तो इसे हल करने के लिए और भी शानदार तरीके हो सकते हैं।