对于SQL查询,我有点菜鸟,而且我实际上只使用基本的SELECT,UPDATE,DELETE语句。现在,我需要更新垂直表中的许多行(超过50行),并即时运行如下语句:
UPDATE `postmeta` SET meta_value = 'John' WHERE `meta_key` = 'name' AND `post_id` = 29230;
UPDATE `postmeta` SET meta_value = 'Johnson' WHERE `meta_key` = 'last_name' AND `post_id` = 29230;
UPDATE `postmeta` SET meta_value = 'www.johnsonsdiner.com' WHERE `meta_key` = 'url' AND `post_id` = 29230;
UPDATE `postmeta` SET meta_value = '[email protected]' WHERE `meta_key` = 'mail' AND `post_id` = 29230;
UPDATE `postmeta` SET meta_value = '12341234' WHERE `meta_key` = 'phone' AND `post_id` = 29230;
... + 45 more
请注意,post_id相同,而meta_key不同。
有没有更好的方法来运行所有这些更新,这些更新对于mySQL会有更好的性能?在每个语句中添加LIMIT 1会有所不同吗?
任何帮助表示赞赏
您只能update
对一个case
语句使用一个语句,因为没有一个通用条件也会将通用条件带到where子句:
UPDATE `postmeta`
SET meta_value = case
when `meta_key` = 'name' then 'John'
when `meta_key` = 'last_name' then 'Johnson'
when `meta_key` = 'url' then 'www.johnsonsdiner.com'
when `meta_key` = 'mail' then '[email protected]'
when `meta_key` = 'phone' then '12341234'
.
...45 more
.
end
where `post_id` = 29230;
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句