我对这整个SQL事情还很陌生,无法解决如何解决我的问题。我的表如下所示,主键为(id, name)
:
| bid | name | value |
|=====|==========|============|
| 1 | filename | foo |
| 1 | mime | text/plain |
| 2 | filename | bar |
| 2 | mime | image/png |
现在,我想更新每个名称以包含对应于mime类型的后缀,这样最后看起来像这样:
| bid | name | value |
|=====|==========|============|
| 1 | filename | foo.txt |
| 1 | mime | text/plain |
| 2 | filename | bar.png |
| 2 | mime | image/png |
我有一个脚本,它从/etc/mime.type获取mime <->后缀关联,以便覆盖该部分。但是,我无法终生构造正确的SQL更新查询。
任何帮助将不胜感激!很抱歉,如果这是重复的,我不太确定自己要问什么。
嗯。。。您可以使用相关子查询:
update t
set value = (value ||
(select (case when t2.value = 'text/plain' then '.txt'
when t2.value = 'image/png' then '.png'
else ''
end)
from t t2
where t2.id = t.id and
t2.name = 'mime'
)
)
where name = 'filename';
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句