sql-update - 在一个查询中基于多个条件更新多个字段

标签 sql-update

我试图根据where子句中的3种不同条件更新表中的3种不同列。 (我将更新后的数据保存在另一个表中,因此我将它们连接到主键上)

例如,如果我以前在field1中没有客户的值,但现在我有,
我应该能够更新列“field1”。同样,我想更新列field2和field3。

我可以在一个Update语句中完成此操作吗?

要更新一列,您可以编写如下内容:

Update tblCustomer 
SET tblCustomer.Order_Date = tblCustomerInfo.Order_Date
FROM tblCustomer 
LEFT JOIN tblCustomerInfo ON (tblCustomer.CustomerID = tblCustomerInfo.CustomerID)
WHERE tblCustomer.Order_Date <> tblCustomerInfo.Order_Date 
  AND tblCustomer.Order_Date is NULL;

如何根据不同的条件在一次执行中更新3个不同的列
(如果以前缺少该列的数据,则现在可用)

最佳答案

UPDATE categories
    SET display_order = CASE id
        WHEN 1 THEN 3
        WHEN 2 THEN 4
        WHEN 3 THEN 5
    END,
    title = CASE id
        WHEN 1 THEN 'New Title 1'
        WHEN 2 THEN 'New Title 2'
        WHEN 3 THEN 'New Title 3'
    END
WHERE id IN (1,2,3)

关于sql-update - 在一个查询中基于多个条件更新多个字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12359166/

相关文章:

sql - PostgreSQL 而不是使用多个查询更新规则

mysql - MySQL 中的多个更新

mysql - 处理从两个或多个连接访问和更改的列 (MySQL)

MySQL 无法在 FROM 多表连接中指定要更新的目标表

MySQL 更新有两个子查询

mysql - 使用 if 条件更新 MySQL

php - 如何更新特定列而不重复并替换值

sql - 根据插入的 ID 和 SQL 中的另一个非源列更新记录

mysql - 如何通过mysql中带有某些前缀的行的自动增量值来更新行的特定字段(列)?

即使给出了不同的 where 子句,MySQL 触发器也会更新所有行