【问题标题】:Select elements under different conditions in a single postgreSQL query?在单个 postgreSQL 查询中选择不同条件下的元素?
【发布时间】:2013-11-02 14:13:48
【问题描述】:

我是 SQL 新手,我想知道是否可以在单个查询中为每列使用不同的条件从表列中进行选择。例如:假设我有一个包含三列的表,分别称为“姓名”、“生日”和“工资”。当生日或薪水为空时,我想从姓名中进行选择,但如果生日和薪水本身为空,我只想从姓名中进行选择(即,如果一行有姓名,没有生日,有薪水,只有姓名和生日将被选中)。有没有办法在 postgreSQL 中做到这一点?

【问题讨论】:

  • 您能用示例数据说明您的问题吗?
  • @Macklin 。 . . SQL 查询中选择的列是固定的,因此您不能返回可变列。在您的情况下发生的情况是某些列可能是 NULL - 应用程序层可能需要弄清楚如何处理它们。
  • 你的问题没有多大意义。请编辑您的问题以提供示例数据、示例标准和示例查询输出,以便我们了解您的需求。目前,您不太可能得到任何答案。

标签: sql postgresql


【解决方案1】:

PostgreSQL 中的 SQL 查询中的列是固定的(与 Informix 不同,在 Informix 中您可以拥有可变列的结果集)。有。但是有几种方法可以解决这个问题。

  1. 使用 JSON 和一个怪异的 CASE 语句。

  2. 使用 HSTORE 和一个怪物 CASE 语句

  3. 使用 JSON 和函数灵活组合信息。

  4. 使用 HSTORE 和函数灵活地组装信息。

我的建议是,如果您真的想要这个,如果您至少使用 9.1(并且可以安装扩展)或 9.2(即使没有扩展),那么带函数的 JSON 将是最好的方法。这不是很容易做到,需要一些练习,但这是可能的。

另一种选择是在未找到该值的情况下返回 NULL,并在客户端进行处理。

【讨论】:

    猜你喜欢
    • 2020-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-22
    • 1970-01-01
    • 2021-03-11
    • 2014-12-14
    • 2021-06-07
    相关资源
    最近更新 更多