有条件地选择 postgresQL 中的列
Posted
技术标签:
【中文标题】有条件地选择 postgresQL 中的列【英文标题】:Conditionally select a column in postgres SQL 【发布时间】:2017-05-12 23:52:40 【问题描述】:假设我有一张这样的桌子:
table messages
id | show_message | message
3 | false | "some message"
4 | true | "another message"
如果show_message
列为真,我只想选择消息列,但我也想选择显示消息列。子查询是否适合该场景?我觉得我想太多了。我正在使用 Postgres 9.5
【问题讨论】:
【参考方案1】:简单的case
怎么样?
select id, show_message, (case when show_message then message end) as message
from t;
这会将NULL
值放入结果集中未显示消息的message
列中。
SQL 查询返回一组固定的列。因此,这是您可以使用单个查询做的最好的事情。如果你真的想要一个有时有两列、有时有三列的结果集,那么就需要某种条件逻辑或动态 SQL。
【讨论】:
将列返回为 null 完全没问题,因为我可以在尝试对其执行任何操作之前检查 show_message 的值。从未使用过案例,但它看起来对我有用。我会试试看。 这是完美的。感谢您的见解。 对于任何想要深入挖掘的人 - postgresql.org/docs/9.4/functions-conditional.html以上是关于有条件地选择 postgresQL 中的列的主要内容,如果未能解决你的问题,请参考以下文章