如何更新同一个Mysql表中的多行

时间:2017-04-08 16:20:55

标签: mysql

我有一个名为“tbl_settings”的表。

我有4列:id,name,value,description。

我有一个html表单,列出了每个设置的文本框。

提交后,我想根据设置名称更新每个设置值。

作为参考,我的几行设置名称是: site_title,site_title_description,contact_name。

我需要帮助找出最佳方法,根据行的名称更新具有相应值的所有行。

我正在手机上写这个,但目前没有代码,所以请大致了解我需要运行的查询。

1 个答案:

答案 0 :(得分:1)

UPDATE tbl_settings
SET value = 'new title'
WHERE name = 'site_title'

这会将所有site_title行更改为value = 'new title'

WHERE子句可以使用您在SELECT查询中使用的任何相同条件来查看要更新的行。

如果您想根据其他条件分配不同的值,可以使用CASE表达式:

UPDATE tbl_settings
SET value = CASE
    WHEN condition1 THEN 'new title 1'
    WHEN condition2 THEN 'new title 2'
    WHEN condition3 THEN 'new title 3'
END
WHERE name = 'site_title'
AND (condition1 OR condition2 OR condition3)

或许这就是你想要的:

UPDATE tbl_settings
SET value = CASE name
    WHEN 'site_title' THEN 'new title'
    WHEN 'site_title_description' THEN 'new description'
    WHEN 'contact_name' THEN 'new contact name'
END
WHERE name in ('site_title', 'site_title_description', 'contact_name')