![](/img/trans.png)
[英]MySQL: i need to pull the same column name from multiple rows into single query based on same conditions
[英]MySQL Update multiple rows on a single column based on values from that same column
我有一個如下所示的表:
ID Key Value Order
1 gender m 0
2 gender f 0
34 age 10 0
35 age 80 0
要更新這些行,我必須使用以下內容:
UPDATE `DemoGroup` SET `value` = 'male' WHERE `value` = 'm'
UPDATE `DemoGroup` SET `value` = 'female' WHERE `value` = 'f'
UPDATE `DemoGroup` SET `value` = '10-19' WHERE `value` = '10'
UPDATE `DemoGroup` SET `value` = '80-89' WHERE `value` = '80'
有沒有辦法將此合並到一個更新語句中,而不使用ID(不保證是相同的),例如(即使這不起作用)...
UPDATE `DemoGroup`
SET `value`= CASE `value`
WHEN 'm' THEN 'male',
WHEN 'f' THEN 'female' END
WHERE `value` = 'm' OR `value` = 'f'
如果我能弄清楚如何為每一行設置Order字段,那么更多的獎勵(但不是nesseary)...
你應該更新值不僅基於值的value
而且基於key
的值,否則你可以在key為'shirt-size'時將'm'更新為'male'。
UPDATE `DemoGroup`
SET `value` = CASE
WHEN (`key`, `value`) = ('gender', 'm') THEN 'male'
WHEN (`key`, `value`) = ('gender', 'f') THEN 'female'
WHEN (`key`, `value`) = ('age', '10') THEN '10-19'
WHEN (`key`, `value`) = ('age', '80') THEN '80-89'
ELSE `value` -- no-op for other values
END
WHERE `key` IN ('gender','age');
MySQL確實有一個案例功能。 嘗試:
UPDATE DemoGroup SET `value` =
CASE `value` WHEN 'm' THEN 'male'
WHEN 'f' THEN 'female'
WHEN '10' THEN '10-19'
WHEN '80' THEN '80-89' END;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.