mysql - SQL 查询 : Cannot create view due to error #1349 : Help to restructure query

标签 mysql subquery mysql-error-1349

我使用的查询选择检查类型“checks”,并在日志文件中查找引用此检查的最新日志条目。

SELECT checks.*, logs.last_completed_on, logs.completed_by
    FROM checks INNER JOIN 
         (
             SELECT check_id, MAX(completed_on) AS last_completed_on,
             completed_by FROM checks_log GROUP BY check_id
          ) logs    
ON checks.id = logs.check_id 

此查询有效,但我需要为其创建一个 View 。这是我第一次使用 View ,所以我对它们了解不多,但我读到这种类型的查询是不可能的...

我的问题是是否有办法以任何方式对其进行重组?

我想另一种解决方案是针对表中每一行的特定检查 ID 调用此查询?虽然这听起来很糟糕……而且速度很慢,但我不确定。

谢谢

最佳答案

MySQL 中的 View 无法处理 from 子句中的子查询。因此,您将需要一些不同的逻辑。

这个版本应该可以工作:

SELECT c.*, cl.completed_on as last_completed_on, cl.completed_by
FROM checks c INNER JOIN 
     checks_log cl
     ON c.check_id = cl.check_id
WHERE cl.completed_on = (SELECT MAX(cl2.completed_on)
                         FROM checks_log cl2 
                         WHERE cl2.check_id = cl.check_id
                        );

MySQL 确实允许在 SELECTFROM 子句中使用子查询,所以这应该没问题。

关于mysql - SQL 查询 : Cannot create view due to error #1349 : Help to restructure query,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30898637/

相关文章:

PHP 将用户重定向到登录后离开的页面

mysql - 从一组数据的多个字段创建摘要报告

mysql - 使用多个子查询加速 mysql 查询

mysql 使用子查询改进 View

mysql sql case语句对于不同的条件给出相同的值

php - 登录表单电子邮件和密码不正确错误

javascript - Mongoose 在嵌套模式中查找

MS-Access 错误 : At most one record can be returned by this subquery

MySQL:在 FROM 子句限制中使用子查询查看