[英]sql case condition as SELECT from another table
我有一个有条件的工作程序。 它在每个INSERT上触发,并检查一列中的特定值,然后更新另一列。 整个SP具有20-30个CASE条件。 我正在从MySQL迁移到PostgreSQL,想知道是否可以自动化它并在CASE中包含SELECT? (请参见下面的代码)
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
是的,您可以使用子查询:
UPDATE myTable
SET columnName = (SELECT ct.col2
FROM myCaseTable ct
WHERE mytable.OtherColumn like '%' || ct.col || '%'
LIMIT 1
)
WHERE columnName IS NULL;
LIMIT
是一种确保子查询返回一行的便捷方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.