【问题标题】:Can's select between two "select" statements可以在两个“选择”语句之间进行选择
【发布时间】:2020-11-09 15:20:42
【问题描述】:

我需要做声明

SELECT data from result_orders

仅当 order_state 为 NULL 时。

否则我需要做另一个选择语句。

我尝试了这个但得到错误:

ERROR:  syntax error at or near "SELECT"
LINE 15:  WHEN order_state IS NULL THEN SELECT data from result_order...




SELECT
CASE data
 WHEN order_state IS NULL THEN SELECT data from result_orders
 ELSE select data from result_orders
END 
FROM result_orders

【问题讨论】:

    标签: postgresql-9.5


    【解决方案1】:

    您可以在这里使用联合,例如:

    WITH cte AS (
        SELECT data
        FROM result_orders
        WHERE order_state IS NULL
    )
    
    SELECT * FROM cte
    UNION ALL
    SELECT ... FROM result_orders WHERE (SELECT COUNT(*) FROM cte) = 0;
    

    如果联合中的第一个查询确实有记录,则第二个查询将不返回任何内容。如果第一个查询没有记录,那么如果该查询匹配任何内容,则第二个查询将返回记录。

    【讨论】:

      【解决方案2】:

      线

      WHEN order_state IS NULL THEN SELECT data from result_order
      

      语法错误,应该是这样的

       SELECT ISNULL(order_state, result_order)
      

      这意味着当 order_state 为 null 时返回 result_order

      【讨论】:

      • 错误:“FROM”第 13 行或附近的语法错误:SELECT ISNULL(order_state, data FROM result_order)
      • @a_subscriber 试试这个,抱歉我对 sql 很陌生。
      • 错误:列“order_state”不存在第 13 行:SELECT ISNULL(order_state, result_order)
      猜你喜欢
      • 2013-02-23
      • 2020-12-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-06
      相关资源
      最近更新 更多