有条件地在postgres SQL中选择一列

时间:2016-12-28 16:54:30

标签: sql postgresql postgresql-9.5

说我有这样一张桌子:

    table messages
id | show_message | message
 3 |   false      | "some message"
 4 |   true       |  "another message"

如果show_message列为true,我只想选择消息列,但我也希望选择show message列。子查询是否适合该场景?我觉得我在想这个。我使用的是Postgres 9.5

1 个答案:

答案 0 :(得分:8)

一个简单的case怎么样?

select id, show_message, (case when show_message then message end) as message
from t;

这会在结果集的NULL列中为未显示的邮件添加message值。

SQL查询返回一组固定的列。因此,这是您使用单个查询所能做到的最好的事情。如果你真的想要一个有时有两列但有时有三列的结果集,那么就需要某种条件逻辑或动态SQL。