2014-09-19 54 views
1

我有以下的select语句:如何选择表A和更新表记录:A

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。我不知道该怎么做。 感谢

回答

1

只要改变SELECTUPDATE

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; 

这实际上是一个很好的做法 - 真正改变任何数据之前,让您的标准正确使用SELECT

0

使用的update声明:

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; 
0

可能工作

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; 
相关问题