使用不同的值更新列中的多个表行

时间:2012-05-31 20:31:44

标签: sql

我有多行需要更新并插入客户名称。如何在一个查询中执行此操作,而不是使用不同的名称一次又一次地运行类似下面的查询?

UPDATE orders
SET cust_name = 'Sue'
WHERE p_id = 6

2 个答案:

答案 0 :(得分:3)

您可以使用类似

的内容
    UPDATE mytable
    SET myfield = CASE other_field
        WHEN 1 THEN 'value'
        WHEN 2 THEN 'value'
        WHEN 3 THEN 'value'
    END
    WHERE id IN (1,2,3)

有关详情,请查看Update Multiple Rows With Different Values and a Single SQL Query

答案 1 :(得分:0)

你通常不能。至少,MySQL,DB2,SQL Server和PostgreSQL不支持不同WHERE子句适用于不同SET子句的查询。

你也不需要。您通常可以做的是使用带有占位符的预准备语句来表示变量,并使用参数元组列表执行。根据语言,数据库适配器和数据库,这可以在“批处理”模式下执行,这非常有效。

更高精度需要有关您正在使用的语言,数据库和数据库适配器的更多信息。