ERROR 1349:视图的 SELECT 在 FROM 子句中包含子查询

Posted

技术标签:

【中文标题】ERROR 1349:视图的 SELECT 在 FROM 子句中包含子查询【英文标题】:ERROR 1349: View's SELECT contains a subquery in the FROM clause 【发布时间】:2016-08-27 17:43:30 【问题描述】:
SELECT * FROM (SELECT ((DATE_SUB(curdate(), INTERVAL 4 WEEK)) + INTERVAL c.number DAY) AS date_year,

(DATE_FORMAT(((DATE_SUB(curdate(), INTERVAL 4 WEEK)) + INTERVAL c.number DAY),'%w') + 1) as day
FROM (SELECT singles + tens + hundreds number FROM 
( SELECT 0 singles
UNION ALL SELECT   1 UNION ALL SELECT   2 UNION ALL SELECT   3
UNION ALL SELECT   4 UNION ALL SELECT   5 UNION ALL SELECT   6
UNION ALL SELECT   7 UNION ALL SELECT   8 UNION ALL SELECT   9
) singles JOIN 
(SELECT 0 tens
UNION ALL SELECT  10 UNION ALL SELECT  20 UNION ALL SELECT  30
UNION ALL SELECT  40 UNION ALL SELECT  50 UNION ALL SELECT  60
UNION ALL SELECT  70 UNION ALL SELECT  80 UNION ALL SELECT  90
) tens  JOIN 
(SELECT 0 hundreds
UNION ALL SELECT  100 UNION ALL SELECT  200 UNION ALL SELECT  300
UNION ALL SELECT  400 UNION ALL SELECT  500 UNION ALL SELECT  600
UNION ALL SELECT  700 UNION ALL SELECT  800 UNION ALL SELECT  900
) hundreds
) c  
WHERE c.number BETWEEN 0 and 364 ) a

【问题讨论】:

(1) 问题出在哪里?,(2) 发布为 INDENTED 代码,(3) 减少重现问题的最小可能查询 mysql: View with Subquery in the FROM Clause Limitation的可能重复 【参考方案1】:

虽然您没有提出任何问题,但我尝试猜测:当您尝试在问题中运行查询时,您会在标题中收到错误消息。

正如create view 声明中的 mysql 文档所说:

视图定义受以下限制:

在 MySQL 5.7.7 之前,SELECT 语句不能包含子查询 FROM 子句。

因此,要么将 mysql 升级到 v5.7.7,要么不能在视图的 from 子句中使用子查询。考虑使用联合子查询的辅助表。

【讨论】:

以上是关于ERROR 1349:视图的 SELECT 在 FROM 子句中包含子查询的主要内容,如果未能解决你的问题,请参考以下文章

#1349 - 视图的 SELECT 在 FROM 子句中包含一个子查询

错误 #1349:View 的 select cluse 在 from 子句中包含子查询

MySql VIEW 删除 FROM 条件下的子查询

[洛谷P1349]广义斐波那契数列

洛谷P1962 斐波那契数列 || P1349 广义斐波那契数列[矩阵乘法]

P1349 广义斐波那契数列(矩阵乘法)