2017-04-08 31 views
-4

我有一個名爲「tbl_settings」的表。如何在同一個Mysql表中更新多行

我有4列:id,名稱,值,說明。

我有一個HTML格式列出每個設置的文本框。

提交後,我想根據設置的名稱更新每個設置值。

僅供參考,我的設置名稱爲幾行: site_title,site_title_description,contact_name。

我需要幫助找出最好的方法來根據行的名稱更新具有相應值的所有行。

我正在寫這個在我的手機上,目前沒有與我的代碼,所以請只是一個普遍的想法,我需要運行的查詢。

+0

https://開頭開發.mysql.com/doc/refman/5.7/en/update.html – RiggsFolly

+1

您嘗試過什麼?一般來說,對於任何給定的單個更新(要定向的行的(1)標識符的任何唯一組合)以及(2)要在這些行中設置的值),可以向數據庫發出「UPDATE」命令。 – David

+0

使用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

回答

1
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') 
+0

我需要更新具有不同值的多行。 – MktCloud

+0

你應該在問題中更清楚地解釋它。你如何確定哪些行要更新哪些值? – Barmar

+0

我的歉意。我從我的電話發帖,現在已經離開電腦。我已經嘗試過使用案例功能來更新每一行,但這不起作用。 – MktCloud

相關問題