如何使用相同的表达式/值更新某些列

时间:2014-02-19 15:58:31

标签: sql postgresql sql-update

我想要这样的事情:

UPDATE tab1
   SET name = descr = proc1(name)
 WHERE id &lt 1000

与双重调用不同:

UPDATE tab1
   SET name = proc1(name),
       descr = proc1(name)
 WHERE id &lt 1000

这可能吗?

1 个答案:

答案 0 :(得分:0)

不像你写的那样。我假设调用proc1是昂贵/耗时的?如果是这样,您可以使用子查询,但需要额外加入:

UPDATE tab1
SET name = p.p1n
    descr = p.p1n
FROM (
    SELECT id, proc1(name)
    FROM tab1
) p(id, p1n)
WHERE tab1.id = p.id
AND   tab1.id < 1000;