SQL 查询:由于错误 #1349 无法创建视图:帮助重组查询

SQL Query : Cannot create view due to error #1349 : Help to restructure query

我使用一个查询来选择检查类型 "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 

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

我的问题是是否有办法以任何方式重组它?

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

谢谢

MySQL 中的视图无法处理 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 子句中的子查询,所以这应该没问题。

只要查询正常工作,您就可以从中创建视图。
创建视图 {insertnamehere} 作为 (在此处插入您的查询)
尝试使用和不使用括号。不知道你用的是什么工具*