2013-05-08 6 views
6

मेरे पास 2 टेबल हैं: tblRider और tbl_SCORE। tblRider में सभी सवार (प्रतियोगियों) के बारे में सारी जानकारी है और tbl_SCORE में सभी राइडर्स के स्कोर सहेजे गए हैं। मैं tblRider में एक कॉलम हाफ पाइपफिनल अपडेट करना चाहता हूं। मानक यह कॉलम 0 पर सेट है, लेकिन मैं इसे 20 सर्वश्रेष्ठ स्कोर वाले सवारों के लिए 1 पर सेट करना चाहता हूं। (ताकि केवल 20 सबसे अच्छा सवार फाइनल में भाग ले सकते हैं और जो करते हैं एक 1 स्तंभ HalfPipeRider में है)इसमें शामिल होने, अपडेट करने और ऑर्डर करने के साथ कोई प्रश्न कैसे लिखें?

यह मेरा क्वेरी है:

UPDATE tblRider 
JOIN tbl_SCORE ON tblRider.riderID = tbl_SCORE.riderID 
SET tblRider.HalfPipeFinal = 1 
WHERE `gameID` =35 
ORDER BY `score` DESC 
limit 20;** 

अगर मैं इस क्वेरी चलाने मैं इस त्रुटि मिलती है: " " " द्वारा अद्यतन और आदेश का गलत उपयोग तो मैं देख रहा था और स्पष्ट रूप से आप शामिल होने के द्वारा अद्यतन और आदेश का उपयोग नहीं कर सकते। इसलिए मैं इस प्रश्न को बिना किसी आदेश के लिखने का एक और तरीका ढूंढ रहा हूं, लेकिन मुझे यह नहीं मिल रहा है।

सभी मदद की सराहना की जाती है। धन्यवाद

+0

क्या आप इस क्वेरी को "ऑर्डर बाय" के बिना नहीं चला सकते .. ?? तब त्रुटि संदेश क्या प्रदर्शित किया? –

उत्तर

11

एसक्यूएल में आपके पास के हिस्से के रूप में ORDER BY नहीं हो सकता है। लेकिन तुम, फिल्टर एक सबक्वेरी कर सकते हैं यह एक उपनाम देने के लिए और यह में शामिल होने के ...

UPDATE tblRider r 
JOIN 
(
    SELECT riderID 
    FROM tbl_SCORE 
    WHERE gameID = 35 
    ORDER BY score DESC 
    LIMIT 20 
) s 
ON r.riderID = s.riderID 
SET r.HalfPipeFinal = 1; 
+0

बहुत बहुत धन्यवाद! – user2362951

+0

@ user2362951 आप उत्तर के रूप में चिह्नित कर सकते हैं। या यदि नहीं, तो मुझे आशा है कि इस दिन कुछ लोगों को वोट मिलेगा ... अग्रिम में thanx :) – davmos

+0

यह केवल तभी काम करता है जब WHERE स्थिति में केवल दूसरी तालिका शामिल हो :( – matteo

3

मेरे सिर के ऊपर बंद करें और यह परीक्षण करने के लिए खुला एक एसक्यूएल सत्र आप की कोशिश कर सकते बिना ...

UPDATE tblRider 
SET HalfPipeFinal = 1 
WHERE riderID 
IN 
(
    SELECT s.riderID 
    FROM tbl_SCORE 
    ORDER BY s.score 
    DESC limit 20 
) 

हालांकि IN (subselect) में अप्रिय प्रदर्शन दंड हो सकता है।

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