一尘不染

MySQL:FROM子句限制中的带有子查询的视图

mysql

在MySQL 5.0中,为什么尝试在FROM子句中创建带有子查询的视图时会发生以下错误?

错误1349(HY000):视图的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

阅读 427

收藏
2020-05-17

共1个答案

一尘不染

您的查询不能只写成:

SELECT u1.name as UserName from Message m1, User u1 
  WHERE u1.uid = m1.UserFromID GROUP BY u1.name HAVING count(m1.UserFromId)>3

这也应该有助于解决MySQL中子查询的已知速度问题

2020-05-17