有条件地选择 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 中的列的主要内容,如果未能解决你的问题,请参考以下文章

如何有条件地隐藏或显示剑道网格​​中的列

有条件地选择 dplyr 中某些值比例为 NA 的列

是否有可能在Oracle中有条件地透视不同数据类型的列?

PostgreSQL。选择与聚合函数中的值相关的列

如何有条件地隐藏 ag 网格中的列

在 PostgreSQL 中选择具有特定列名的列