sql - 是否可以将 CASE 与 WHERE 一起使用?

标签 sql postgresql

尝试这样做:

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/

相关文章:

sql - 本月第 3 个 <day_of_week> - MySQL

每组多个组的SQL总和

php - 在php中制作加法表和乘法表。

windows - 忘记了 Postgres 的管理员密码(Windows 安装),无法重置

postgresql - SQL*Plus 格式化选项的 psql 替代品

c++ - 如果在我们插入数据库时​​电源关闭会发生什么?

sql - Postgres : COPY TO error

sql - 如何在包含可变数组的表上授予 SELECT

python - postgres 查询中的文字括号,pgadmin 与 psycopg2

python - Django QuerySet 与原始 SQL 性能注意事项