我有一个名为“tbl_settings”的表。
我有4列:id,name,value,description。
我有一个html表单,列出了每个设置的文本框。
提交后,我想根据设置名称更新每个设置值。
作为参考,我的几行设置名称是: site_title,site_title_description,contact_name。
我需要帮助找出最佳方法,根据行的名称更新具有相应值的所有行。
我正在手机上写这个,但目前没有代码,所以请大致了解我需要运行的查询。
答案 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')