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

时间:2015-06-17 17:40:15

标签: mysql subquery mysql-error-1349

我使用一个选择支票类型的查询"检查"并查看日志文件以查找引用此检查的最新日志条目。

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 

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

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

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

谢谢

2 个答案:

答案 0 :(得分:0)

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子句中的子查询,所以这应该没问题。

答案 1 :(得分:0)

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