2013-11-01 12 views
5

मैं निम्नलिखित की तरह रिकॉर्ड के साथ डेटाबेस में एक मेज है:से अधिक मान के साथ MySQL अद्यतन क्वेरी

match_id | guess | result 
    125 | 1 | 0 
    130 | 5 | 0 
    233 | 11 | 0 
    125 | 2 | 0 

मेरी उन प्रत्येक मैच के लिए एक अनुमान चुनें और मैं एक समारोह है कि अनुमान के आधार पर की परिणाम की गणना है मैच का नतीजा: यदि अनुमान सही है तो परिणाम होगा (1) यदि यह गलत है तो परिणाम होगा (2) यदि मैच समाप्त नहीं हुआ तो परिणाम (0 डिफ़ॉल्ट) मेरे पास होगा अनुमानों के लिए ग्यारह संभावनाएं (एक से अधिक एक ही समय में सही हो सकती हैं) उदाहरण के लिए: यदि मेरे पास एक मैच व्हाइट आईडी = 125 है और मेरे पास सभी अनुमान हैं 8,11 को छोड़कर रांग इसलिए मुझे मिलान आईडी वाले सभी मैचों के लिए परिणाम फ़ील्ड अपडेट करना चाहिए और उनका अनुमान 8 या 11 है (मैं इस परिणाम फ़ील्ड के लिए 1 दूंगा) और मैं दूसरे के लिए (2) देना चाहता हूं एक ही मैच

का अनुमान मैं निम्नलिखित की तरह सभी ग्यारह संभावनाओं के लिए इस क्वेरी का उपयोग करें:

UPDATE `tahminler` SET result=1 WHERE match_id='1640482' AND tahmin='8' 
UPDATE `tahminler` SET result=1 WHERE match_id='1640482' AND tahmin='11' 
UPDATE `tahminler` SET result=0 WHERE match_id='1640482' AND tahmin='1' 
UPDATE `tahminler` SET result=0 WHERE match_id='1640482' AND tahmin='2' 
UPDATE `tahminler` SET result=0 WHERE match_id='1640482' AND tahmin='3' 
UPDATE `tahminler` SET result=0 WHERE match_id='1640482' AND tahmin='4' 
UPDATE `tahminler` SET result=0 WHERE match_id='1640482' AND tahmin='5' 
UPDATE `tahminler` SET result=0 WHERE match_id='1640482' AND tahmin='6' 
UPDATE `tahminler` SET result=0 WHERE match_id='1640482' AND tahmin='7' 
UPDATE `tahminler` SET result=0 WHERE match_id='1640482' AND tahmin='9' 
UPDATE `tahminler` SET result=0 WHERE match_id='1640482' AND tahmin='10' 

मुझे पता है कि अगर मैं एक क्वेरी में यह काम कर सकती है या नहीं करना चाहते हैं??

उत्तर

4

उपयोग इन दोनों क्वेरी:

UPDATE `tahminler` 
     SET result=0 
     WHERE match_id='1640482' 
       AND tahmin IN ('1','2','3','4','5','6','7','9','10') 

और फिर इस का उपयोग करें:

UPDATE `tahminler` 
     SET result=1 
     WHERE match_id='1640482' 
       AND tahmin IN ('8','11') 
4

आप ऐसा कर सकते हैं, लेकिन यह भी बदसूरत हो जाएगा। CASE() ऑपरेटर का प्रयोग करें, जैसे:

UPDATE tahminler 
SET 
    result=CASE 
    WHEN tahmin IN ('1','2','3','4','5','6','7','8','9','10') THEN 0 
    WHEN tahmin IN ('8', 11) THEN 1 
    END 
WHERE 
    match_id='1640482' 
+0

मुझे लगता है कि यह अधिक पसंदीदा विकल्प है .. मुझे यह पसंद है जब वहाँ केवल एक बयान कई बयानों के बजाय है – Schalk

1
UPDATE `tahminler` SET `result` = CASE WHEN tahmin IN(8,11) THEN 1 
            WHEN tahmin IN(2,3,4,5,6,7,9,10) THEN 0 
           END 
WHERE match_id = 1640482; 
संबंधित मुद्दे