【问题标题】:Conditionally select a column in postgres SQL有条件地选择 postgresQL 中的列
【发布时间】:2023-03-10 07:41:01
【问题描述】:

假设我有一张这样的桌子:

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

如果show_message 列为真,我只想选择消息列,但我也想选择显示消息列。子查询是否适合该场景?我觉得我想太多了。我正在使用 Postgres 9.5

【问题讨论】:

    标签: sql postgresql postgresql-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
    猜你喜欢
    • 2019-03-29
    • 1970-01-01
    • 2012-10-24
    • 2019-04-20
    • 1970-01-01
    • 2020-12-02
    • 2017-07-25
    • 2016-08-08
    • 2017-05-16
    相关资源
    最近更新 更多