我正在嘗試同時更新多個值,
表值
UniqueRef, Name
1101, AA01
1102, AA02
1103, AA03
我想將所有 1101、1102 和 1103 的 UniqueRef 更新為不同的值,例如 1101 將更新為 1101AB 等
我怎樣才能批量執行此操作而不是一次一個?
uj5u.com熱心網友回復:
在單個UPDATE陳述句中執行此操作:
似乎您需要以UniqueRef單一模式進行更新。所以使用以下陳述句:
UPDATE YourTable SET name = CONCAT(UniqueRef, 'AB');
這將更新所有行 - 如果您需要限制范圍使用WHERE陳述句并定義適當的條件。
如果您需要為每行使用不同的值使用CASE陳述句
UPDATE YourTable
SET name =
CASE
WHEN UniqueRef = 1101 THEN 'newValue'
WHEN UniqueRef = 1102 THEN 'anotherNewValue'
{nextStatements}
ELSE name
END
;
uj5u.com熱心網友回復:
可擴展的解決方案是在新值的源上使用 UPDATE 和 JOIN(通常是另一個表,但它可以是在線視圖,如下所示)
UPDATE
example
INNER JOIN
(
SELECT 1101 AS id, 'X' AS new_name
UNION ALL
SELECT 1102, 'Y'
)
AS update_map
ON update_map.id = example.uniqueRef
SET
example.name = update_map.new_name
演示:https ://dbfiddle.uk/g71hwuYG
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/524157.html
標籤:mysqlsql
下一篇:PDO結果的陣列過濾器
