在MySQL 5.0中,为什么在try 使用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

推荐答案

您的查询不能写为:

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子查询中已知的速度问题

Mysql相关问答推荐

筛选器中的Case When语句

如何在Sequelize中将查询作为选项?

MySQL将JSON值从对象类型更改为数组

基于多行从表中 Select

在MySQL CLI中,是否有自动完成过程的方法?

在MySQL中使用FIRST_VALUE()

为什么我的 SQL 查询不更新 Node.js 和 MySQL 中用户以外的用户属性?

过滤值为0时如何在MySQL查询中设置条件?

如何在 Shopware 6 DAL 中实施 Haversine 公式?

如何使用sql查询在日期列中按值和最大值分组的表中添加列?

如何根据 R 中的价格范围将数据从一列复制到新列?

使用适配器设计模式和外观设计模式实现

如何创建将行转换为列的 MySQL 查询?

MySQL表中给定字段的每个不同值的连续记录形成对

SQL 查找边界之间的值

WHERE SQL 语句中的列顺序是否重要

SQL UPDATE中的str_replace?

MySQL Workbench 无法加载 mysql.proc

Mysql:创建表时将DATETIME的格式设置为'DD-MM-YYYY HH:MM:SS'

MySQL:ALTER IGNORE TABLE 给出违反完整性约束