使用 PostgreSQL(我使用的是 9.1 版)是否可以通过单个查询批量更新具有另一列值的列值,但如果另一列值为空,则使用第三列的值,如果没有第三个使用当前日期时间(所有列都有 type timestamp
)
我需要改变
列A 列B 列C 空 foo 栏 null null baz 空空空
到
列A 列B 列C foo foo 酒吧 巴兹空巴兹 quz null null
quz
当前日期时间在哪里。
Low*_*n M 13
您可以使用COALESCE()
函数进行更新:
UPDATE ...
SET columnA = COALESCE(columnB, columnC, now());
Run Code Online (Sandbox Code Playgroud)
COALESCE
将返回您提供的列表中的第一个非空值。
dez*_*zso 11
可以使用COALESCE
提供默认值而不是可能的 NULL 值。它是一个可变参数函数,因此它可以接受任意数量的参数。返回值将是第一个非 NULL 参数(如果没有,它仍然返回 NULL)。
使用它,您UPDATE
可能看起来像:
UPDATE your_table
SET columnA = COALESCE(columnB, columnC, 'quz');
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
26292 次 |
最近记录: |