是否可以跳过 CASE WHEN postgres 中的列

Is it possible to skip column in CASE WHEN postgres

我有一个问题:

SELECT o.version, o.text, o.id 
case when language=1 
then o.language else [SKIP LANGUAGE COLUMN] end as language  
FROM books AS o 

如果 language!=1 是否可以跳过第 language 列? 所以如果 language=1 我想得到: 版本|textt|id|语言

否则: 版本|文本|id| (没有语言栏)

"Is it possible to skip column in CASE WHEN postgres?"

如果 "Skip" 你的意思是查询项目在结果集中有不同数量的列,就像@a_horse_with_no_name 评论的那样,NO.

您可以在 else 表达式中分配 null(或其他值)。

case when language=1 then o.language else null end as language  

或者,如果您想要空值,则将 else 排除在外

case when language=1 then o.language end as language  

如果您必须投影不同数量的列,则需要执行两个单独的查询。