具有多个值的MySQL更新查询

具有多个值的MySQL更新查询,mysql,sql,Mysql,Sql,我在数据库中有一个表,其中包含以下记录: match_id | guess | result 125 | 1 | 0 130 | 5 | 0 233 | 11 | 0 125 | 2 | 0 UPDATE `tahminler` SET result=1 WHERE match_id='1640482' AND tahmin='8' UPDATE `tahminler` SET result=1 WHERE

我在数据库中有一个表,其中包含以下记录:

match_id | guess | result
   125   |   1   |   0
   130   |   5   |   0
   233   |   11  |   0
   125   |   2   |   0
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'
我的用户为每个匹配选择一个猜测,我有一个函数,根据匹配结果计算猜测结果: 如果猜测正确,结果将是(1) 如果错误,结果将是(2) 如果匹配尚未完成,结果将为(0默认值) 我有十一种猜测的可能性(不止一种可能同时是正确的) 例如:如果我有一个id=125的匹配项,并且我所有的猜测都错了,除了8,11 因此,我应该更新所有匹配项的结果字段,这些匹配项具有匹配id,并且它们的猜测值为8或11(对于这个结果字段,我将给出1) 对于同一场比赛的其他猜测,我想给出(2)

我将此查询用于以下十一种可能性:

match_id | guess | result
   125   |   1   |   0
   130   |   5   |   0
   233   |   11  |   0
   125   |   2   |   0
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'
我想知道我是否可以在一个查询中完成这项工作?

使用以下两个查询:

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')

你可以这样做,但也会很难看。使用运算符,如:

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'

我认为这是更可取的选择。。我喜欢只有一个语句而不是多个语句