Sql 如何从表A中选择记录并更新表A

Sql 如何从表A中选择记录并更新表A,sql,postgresql-9.2,Sql,Postgresql 9.2,我有以下select语句: SELECT * FROM pgp WHERE group_id IN ( SELECT group_id FROM pgroups WHERE label LIKE 'Registration%' AND label NOT LIKE '%Snom%' ) AND pid = 12; 它返回如下结果: group_id | pid | value | updatev ----------+--------

我有以下select语句:

SELECT * FROM pgp 
WHERE group_id IN (
    SELECT group_id FROM pgroups 
    WHERE label LIKE 'Registration%' 
        AND label NOT LIKE '%Snom%'
) 
    AND pid = 12;
它返回如下结果:

 group_id | pid      | value | updatev
----------+----------+-------+----------
       34 |       12 |       | f
       11 |       12 |       | t
        4 |       12 |       | t
       13 |       12 |       | t
       17 |       12 |       | f
       19 |       12 |       | f
对于返回的所有记录,我希望强制将“updatev”字段的值设置为true。我不知道该怎么做。
谢谢

只需将
选择
更改为
更新

UPDATE pgp
SET  updatev = 't'
WHERE group_id IN (SELECT group_id FROM pgroups WHERE label like 'Registration%' and label not like '%Snom%') and pid = 12;
这实际上是一个很好的做法-在实际更改任何数据之前,先通过
选择
正确确定标准。

使用以下语句:

UPDATE pgp 
SET    updatev = true
WHERE  group_id IN (SELECT group_id 
                    FROM   pgroups 
                    WHERE  label LIKE 'Registration%' AND 
                           label NOT LIKE '%Snom%') AND
       pid = 12;
可能有用

Update pgp 
set updatev='t'
WHERE group_id IN (SELECT group_id FROM pgroups WHERE label like 'Registration%' and label not like '%Snom%') and pid = 12;