从文本列中获取部分查询

时间:2018-01-17 13:48:15

标签: sql postgresql where

假设我在某个表中有一个文本列。我可以使用

从此列中选择一个值

(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中执行此操作?

1 个答案:

答案 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)

我认为这不是一个好主意......