尝试这样做:
SELECT CASE WHEN field = true THEN one * another ELSE one END as case_field
FROM table WHERE case_field >= 9000
并收到 case_field 不存在的错误。
是否可以在不复制 CASE 的情况下做到这一点?
最佳答案
看起来 PostgresSQL 支持 derived tables
SELECT * FROM
(
SELECT CASE WHEN field = true THEN one * another ELSE one END as case_field
FROM table
) AS derived
WHERE case_field >= 9000
您可能想检查它是否对执行计划没有任何不利影响。
关于sql - 是否可以将 CASE 与 WHERE 一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3132043/