带有subselect的UPDATE语句

时间:2013-08-13 12:55:57

标签: sql postgresql select

我为我创建了一个具有必要条件的脚本。它运作正常。 但我需要在许多行上应用此脚本。而且不仅id是15

UPDATE my_table SET my_field =
  (SELECT 
     CASE WHEN position('a' in my_field) = 0 THEN my_field
          WHEN position('a' in my_field) = 1 THEN substring(my_field from 1 for 5)
          WHEN position('a' in my_field) > 1 THEN substring(my_field from 2 for 5)
     END 
   FROM my_table WHERE id = 15)
WHERE id = 15

我想在特定条件执行的行上应用此脚本。 例如,我想写WHERE my_field LIKE '%ab%'但问题是我已经选择了。因此,我可以应用单独的脚本来获取所有必需的ID,然后手动应用此脚本替换单独脚本中的单个ID。但我想通过一个查询自动应用它。

1 个答案:

答案 0 :(得分:1)

比你想象的容易:)

试试这个:

UPDATE my_table
SET my_field =
    CASE
          WHEN position('a' in my_field) = 0 THEN my_field
          WHEN position('a' in my_field) = 1 THEN substring(my_field from 1 for 5)
          WHEN position('a' in my_field) > 1 THEN substring(my_field from 2 for 5)
    END