假设我在某个表中有一个文本列。我可以使用
从此列中选择一个值 (SELECT textcolumn from sometable WHERE ....)
,查询结果为'5>3'
。
现在我想将此结果添加到我的其他查询中。
UPDATE someothertable SET somecolumn WHERE (SELECT textcolumn from sometable WHERE ....)
我想让它像
一样UPDATE someothertable SET somecolumn WHERE 5>3
我如何在postgresql中执行此操作?
答案 0 :(得分:1)
do
$$
begin
execute format('UPDATE someothertable
SET somecolumn
WHERE %s',(SELECT textcolumn from sometable WHERE ....));
end;
$$
;
示例:
t=# create table ta(i int);
CREATE TABLE
t=# create table tb(t text);
CREATE TABLE
t=# insert into ta select 1;
INSERT 0 1
t=# insert into tb select 'i < 9';
INSERT 0 1
t=# do
$$
begin
execute format('UPDATE ta
SET i = 2
WHERE %s',(SELECT t from tb));
end;
$$
;
DO
t=# select * from ta;
i
---
2
(1 row)
我认为这不是一个好主意......