Postgresql insert中的Postgres CASE语句

Postgresql insert中的Postgres CASE语句,postgresql,Postgresql,我有一张表,我在深造时不得不修改。现在,我想根据条件为表中存在的行插入一些值。我在看用例块 以下是我所拥有的: INSERT INTO MyTable (value1, value2) values (1, SELECT t.name, CASE WHEN t.name IN ('MyName') THEN 1 ELSE 2 END AS value2 FROM MyTable t); 我得到一个错误: ERROR:

我有一张表,我在深造时不得不修改。现在,我想根据条件为表中存在的行插入一些值。我在看用例块

以下是我所拥有的:

INSERT INTO MyTable (value1, value2) values
    (1, SELECT t.name,
          CASE WHEN t.name IN ('MyName') THEN 1
          ELSE 2
        END AS value2
       FROM MyTable t);
我得到一个错误:

ERROR: syntax error at or near "select"
SQL state: 42601
Character: 71

有什么线索吗?

好的,这是语法固定的插入查询

 INSERT INTO MyTable (value1, value2) 
        SELECT t.name,
              CASE WHEN t.name IN ('MyName') THEN 1
              ELSE 2
            END AS value2
           FROM MyTable;
如果试图更改现有行,则需要更新查询,例如

-- first update, set value1 to 1 and value2 for all rows
UPDATE MyTable set value1 = 1,value2 = 2;

-- next query. Set value2 = 1 for only those rows matching your criteria
 UPDATE MyTable
    SET value2 = 1 WHERE name IN ('MyName');

好的,这是语法固定的插入查询

 INSERT INTO MyTable (value1, value2) 
        SELECT t.name,
              CASE WHEN t.name IN ('MyName') THEN 1
              ELSE 2
            END AS value2
           FROM MyTable;
如果试图更改现有行,则需要更新查询,例如

-- first update, set value1 to 1 and value2 for all rows
UPDATE MyTable set value1 = 1,value2 = 2;

-- next query. Set value2 = 1 for only those rows matching your criteria
 UPDATE MyTable
    SET value2 = 1 WHERE name IN ('MyName');

两件事:如果使用select插入,则不需要“values”语句。您的表中似乎还有两列,并且正在尝试插入三个值-1、t.name和您的case语句。是否只插入t.name和case语句?我想检查名称是什么,并在此基础上插入1或2。本质上,我只想插入这两列,我正在尝试用这两列的值更新我的表。在这种情况下,您不需要更新查询吗?是的,我想更新查询将适合于一组更好的东西:如果您使用select插入,您不需要“values”语句。您的表中似乎还有两列,并且正在尝试插入三个值-1、t.name和您的case语句。是否只插入t.name和case语句?我想检查名称是什么,并在此基础上插入1或2。本质上,我只想插入这两列,我正在尝试用这两列的值更新我的表。在这种情况下,您不需要更新查询吗?是的,我想更新查询会非常适合。我想要的是,case条件只应用于value2。对于value1,我有一个默认值,我想插入它,然后我将使用两个更新(甚至为您的列设置一个默认值)。第一次更新设置默认值(update mytable set value1=1),第二次更新仅与您的条件匹配。我想要的是,案例条件仅适用于value2。对于value1,我有一个默认值,我想插入它,然后我将使用两个更新(甚至为您的列设置一个默认值)。第一次更新设置默认值(update mytable set value1=1),第二次更新仅与您的条件匹配。