【发布时间】:2010-09-17 09:22:04
【问题描述】:
在 MySQL 5.0 中,为什么在 FROM 子句中尝试使用子查询创建视图时会出现以下错误?
ERROR 1349 (HY000): View 的 SELECT 在 FROM 子句中包含子查询
如果这是 MySQL 引擎的限制,那他们为什么还没有实现这个功能呢?
另外,有什么好的解决方法可以解决这个限制?
是否有任何变通方法适用于 FROM 子句中的任何子查询,或者是否存在一些不使用 FROM 子句中的子查询就无法表达的查询?
一个示例查询(埋在评论中):
SELECT temp.UserName
FROM (SELECT u1.name as UserName, COUNT(m1.UserFromId) as SentCount
FROM Message m1, User u1
WHERE u1.uid = m1.UserFromId
Group BY u1.name HAVING SentCount > 3 ) as temp
【问题讨论】:
-
感谢您的这篇文章。我通常避免在 mysql 中查看视图。处理边缘情况,尝试合并 fk 表 - 将它们硬塞到视图中。现在这个。多么痛苦——所有这些对子查询的限制?准备转向不同的引擎。
-
这是一个 known design flaw in MySQL,它花了大约 10 年 才受到关注。它已在 MySQL 5.7.7 中修复,我可以确认从 5.7.24 开始就是这种情况。仅供参考。
标签: mysql sql view mysql-error-1349