我有一个有案件条件的工作程序。它会在每次插入时触发,并检查一列中的特定值,然后更新另一列。整个SP有20-30个病例。我正在从MySQL转到PostgreSQL,我想知道是否有可能将其自动化,并在内部进行选择?(见下文代码)
SELECT col1,col2 FORM myCASEtbl
ABC | 1
DEF | 2
123 | 3由此:
UPDATE myTable
SET columnName = CASE
WHEN OtherColumn LIKE '%ABC%' THEN columnName = 1
WHEN OtherColumn LIKE '%DEF%' THEN columnName = 2
WHEN OtherColumn LIKE '%123%' THEN columnName = 4
...
ELSE columnName
END
WHERE columnName IS NULL;对此:
UPDATE myTable
SET columnName = CASE
SELECT 'WHEN OtherColumn LIKE ' + col1 + ' THEN columnName = ' + col2 FROM myCASEtbl
ELSE columnName
END
WHERE columnName IS NULL发布于 2018-06-07 18:48:00
是的,您可以使用子查询:
UPDATE myTable
SET columnName = (SELECT ct.col2
FROM myCaseTable ct
WHERE mytable.OtherColumn like '%' || ct.col || '%'
LIMIT 1
)
WHERE columnName IS NULL;LIMIT是保证子查询返回一行的一种方便的方法。
https://stackoverflow.com/questions/50748207
复制相似问题