Sch*_*man 7 mysql entity-attribute-value
我有一个如下所示的表:
ID Key Value Order
1 gender m 0
2 gender f 0
34 age 10 0
35 age 80 0
Run Code Online (Sandbox Code Playgroud)
要更新这些行,我必须使用以下内容:
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'
Run Code Online (Sandbox Code Playgroud)
有没有办法将此合并到一个更新语句中,而不使用ID(不保证是相同的),例如(即使这不起作用)...
UPDATE `DemoGroup`
SET `value`= CASE `value`
WHEN 'm' THEN 'male',
WHEN 'f' THEN 'female' END
WHERE `value` = 'm' OR `value` = 'f'
Run Code Online (Sandbox Code Playgroud)
如果我能弄清楚如何为每一行设置Order字段,那么更多的奖励(但不是nesseary)...
Bil*_*win 14
您应该更新值不仅基于值value而是基于值key,否则您可以在键为"衬衫大小"时将"m"更新为"男性".
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');
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8044 次 |
| 最近记录: |