说我有这样一张桌子:
table messages
id | show_message | message
3 | false | "some message"
4 | true | "another message"
如果show_message
列为true,我只想选择消息列,但我也希望选择show message列。子查询是否适合该场景?我觉得我在想这个。我使用的是Postgres 9.5
答案 0 :(得分:8)
一个简单的case
怎么样?
select id, show_message, (case when show_message then message end) as message
from t;
这会在结果集的NULL
列中为未显示的邮件添加message
值。
SQL查询返回一组固定的列。因此,这是您使用单个查询所能做到的最好的事情。如果你真的想要一个有时有两列但有时有三列的结果集,那么就需要某种条件逻辑或动态SQL。