2009-03-02 18 views
10

पर एक अद्वितीय यादृच्छिक संख्या असाइन करने के लिए मैं अपनी तालिका में एक कॉलम संलग्न करना चाहता हूं जो अनुक्रमिक सूची = पंक्तियों की संख्या से यादृच्छिक संख्या होगी।MySQL क्वेरी प्रत्येक पंक्ति

तो, मेरी मेज 999 पंक्तियों, तो संख्या 999 करने के लिए 1 बेतरतीब ढंग से और विशिष्ट निर्दिष्ट किया जाएगा था।

अब, मुझे लगा कि मैं एक डमी TempRandomColumn = Rand() जोड़ सकता हूं, इसके अनुसार क्रमबद्ध करें और क्रमशः PHP का उपयोग करके संख्याएं जोड़ें। लेकिन इसका मतलब है 999 MySQL कथन।

क्या एक ही MySQL कथन का उपयोग करके ऐसा करने का कोई तरीका है?

किसी भी पॉइंटर्स के लिए धन्यवाद।

उत्तर

22
SET @r := 0; 
UPDATE items2 
SET  author_id = (@r := @r + 1) 
ORDER BY 
     RAND() 
+0

तुम सच रैंड द्वारा आदेश कर सकते हैं? यह मेरे लिए अजीब लगता है, क्योंकि इसका मतलब यह नहीं है कि हर बार इसकी तुलना किसी अन्य पंक्ति से तुलना में "रैंड" को कॉल करना होगा? –

+0

यह पहले सामान्य रिकॉर्ड के साथ अस्थायी मान के रूप में रैंड() एस का चयन करता है, फिर इन अस्थायी मानों पर आधारित होता है। यह चयन * से चुनें (चयन आईडी, रैंड() तालिका से एएस आरएनडी) आरडी – Quassnoi

+0

द्वारा ऑर्डर करें! "जेन-नेस" के लिए +1 –

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