我有一個名爲「tbl_settings」的表。如何在同一個Mysql表中更新多行
我有4列:id,名稱,值,說明。
我有一個HTML格式列出每個設置的文本框。
提交後,我想根據設置的名稱更新每個設置值。
僅供參考,我的設置名稱爲幾行: site_title,site_title_description,contact_name。
我需要幫助找出最好的方法來根據行的名稱更新具有相應值的所有行。
我正在寫這個在我的手機上,目前沒有與我的代碼,所以請只是一個普遍的想法,我需要運行的查詢。
我有一個名爲「tbl_settings」的表。如何在同一個Mysql表中更新多行
我有4列:id,名稱,值,說明。
我有一個HTML格式列出每個設置的文本框。
提交後,我想根據設置的名稱更新每個設置值。
僅供參考,我的設置名稱爲幾行: site_title,site_title_description,contact_name。
我需要幫助找出最好的方法來根據行的名稱更新具有相應值的所有行。
我正在寫這個在我的手機上,目前沒有與我的代碼,所以請只是一個普遍的想法,我需要運行的查詢。
UPDATE tbl_settings
SET value = 'new title'
WHERE name = 'site_title'
這會將所有的site_title
行更改爲value = 'new title'
。
WHERE
子句可以使用與您在SELECT
查詢中用於查看要更新的行相同的任何條件。
如果要基於其他一些條件分配differentt值,你可以使用一個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')
https://開頭開發.mysql.com/doc/refman/5.7/en/update.html – RiggsFolly
您嘗試過什麼?一般來說,對於任何給定的單個更新(要定向的行的(1)標識符的任何唯一組合)以及(2)要在這些行中設置的值),可以向數據庫發出「UPDATE」命令。 – David
使用where子句進行文本匹配的更新會執行此操作。 'update table set name ='new site title'where name ='site_title'' every'row with'name' as'site_title' will be reset to'new site title'。 – chris85