【发布时间】:2011-04-05 08:03:02
【问题描述】:
我的 UPDATE 语句大致如下:
UPDATE customer
SET forenames=ot.forenames,
surname =
CASE WHEN ot.safeplace IS NULL
THEN 'test SAFEPLACE IS NULL'
ELSE 'test Safeplace IS NOT NULL'
END,
middlename =
CASE WHEN ot.safeplace IS NULL
THEN 'test2 SAFEPLACE IS NULL'
ELSE 'test2 Safeplace IS NOT NULL'
END,
FROM order_transaction ot
WHERE customer.custid = ot.custid
AND ot.trans_orderid = 5678
AND customer.custid = 1234
以上工作。它基本上检查另一个表中的字段是否为 NULL,然后相应地更新客户的“姓氏”和“中间名”。正如您在上面看到的,我重复了两次相同的 CASE 语句。我的问题是 - 有没有办法只指定一次 CASE 语句?
关键是,如果我说要根据某个条件更新 10 个字段,是否需要包含 10 个类似的 CASE 条件?或者可以将 SQL 改进为只有一个 CASE,并在 WHEN / ELSE 子句中更新 10 个字段?
(我使用的是 Postgresql 8.2 数据库,但我相信以上是标准 SQL)。
非常感谢, 里士
【问题讨论】:
标签: sql postgresql