【问题标题】:MySQL View: Union Query FailsMySQL 视图:联合查询失败
【发布时间】:2017-11-16 03:01:32
【问题描述】:

我正在尝试基于以下查询创建一个视图,该查询可以正常工作:

SELECT x_doc_status.Status, sort_order FROM x_doc_status WHERE sort_order IS NOT NULL
UNION  
SELECT "[All]", -2 
UNION  
SELECT "[Open/App] (Trk/Pnd/App)", -1 
UNION 
SELECT "[Open] (Tracking & Pending)", 0
ORDER BY sort_order, STATUS;

但是当我尝试从中创建视图时它失败了。任何建议将不胜感激!

【问题讨论】:

    标签: mysql view union


    【解决方案1】:

    对文字使用单引号

    SELECT
          x_doc_status.Status
        , sort_order
    FROM x_doc_status
    WHERE sort_order IS NOT NULL
    UNION
    SELECT
          '[All]'
        , -2
    UNION
    SELECT
          '[Open/App] (Trk/Pnd/App)'
        , -1
    UNION
    SELECT
          '[Open] (Tracking & Pending)'
        , 0
    ORDER BY
          sort_order
        , STATUS
    ;
    

    我建议您也使用UNION ALL 而不仅仅是UNION。前者更快,因为它不会尝试删除重复的行。

    【讨论】:

    • 谢谢,但没关系,不断收到错误“您的 SQL 语法有错误”。尝试了一个较短的版本,只有一个联合,仍然失败:DELIMITER $$ ALTER ALGORITHM=UNDEFINED DEFINER=root@localhost SQL SECURITY DEFINER VIEW form_report_cbodocstatus AS ( SELECT x_doc_status.Status AS Status , x_doc_status.sort_order AS sort_order FROM x_doc_status WHERE x_doc_status.sort_order IS NOT NULL UNION ALL SELECT '[All]' AS Status, -2 AS sort_order )$$ DELIMITER ;
    • 我能告诉你什么?测试它:piliapp.com/mysql-syntax-check 看看它的想法
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-13
    • 1970-01-01
    相关资源
    最近更新 更多