1

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

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 上调用此查询?虽然这听起来很糟糕......而且速度很慢,但我不确定。

谢谢

4

2 回答 2

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 确实允许在SELECTandFROM子句中使用子查询,所以这应该没问题。

于 2015-06-17T17:46:33.040 回答
0

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

于 2015-06-17T17:47:14.753 回答