我正在尝试将此查询转换为 View :
SELECT t.*
FROM user t
JOIN (SELECT t.UserId,
MAX( t.creationDate ) 'max_date'
FROM user t
GROUP BY t.UserId) x ON x.UserId = t.UserId
AND x.max_date = t.creationDate
但是 View 不接受子查询。
它的作用是查找用户的最新记录。 我的想法来自 this other stackoverflow question
有没有办法将其转换为带有连接的查询?
最佳答案
创建两个 View
Create View MaxCreationDate
As
SELECT t.userId, Max(t2.CreationDate) MaxCreated
FROM user t
Group By t.UserId
Create View UserWithMaxDate
As
Select t.*, m.MaxCreated From user t
Join MaxCreationDate m
On m.UserId= t.UserId
然后就调用第二个...
编辑:嘿,根据 Quassnoi 的评论,以及您对
where t.CreationDate = MaxDate
在你的 orig sql 中,我想知道你是否想看到每个不同用户的所有行,每行都有该用户的最大创建日期,或者你只想每个用户一行,最近创建的一行?
如果是后者,按照@Quassnoi 在评论中的建议,将第二个 View 查询更改如下
Create View UserWithMaxDate
As
Select t.*, m.MaxCreated From user t
Join MaxCreationDate m
On m.UserId= t.UserId
And m.MaxCreated = t.Creationdate
关于sql - 查询表中的最新记录,将查询存储为 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3730798/