MySQL 视图:联合查询失败
Posted
技术标签:
【中文标题】MySQL 视图:联合查询失败【英文标题】:MySQL View: Union Query Fails 【发布时间】: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;
但是当我尝试从中创建视图时它失败了。任何建议将不胜感激!
【问题讨论】:
【参考方案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 看看它的想法以上是关于MySQL 视图:联合查询失败的主要内容,如果未能解决你的问题,请参考以下文章
MySQL线上偶然联合索引查询失败,导致全表扫描,正常查询索引都命中了