具有多个值的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'
我认为这是更可取的选择。。我喜欢只有一个语句而不是多个语句