sql - 查询表中的最新记录,将查询存储为 View

标签 sql mysql many-to-many

我正在尝试将此查询转换为 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/

相关文章:

python - 使用 Python 将表从 KDB+ 更新到 SQL Server

php - PHP 不工作时输出 MySQL 查询的单个结果

mysql - 成绩计算的推荐数据类型是什么?

mysql - 为多对多表添加默认配置

mysql - 防止 MySQL 中的数据透视表/链接表出现重复条目​​(使用 PHP/PDO)

entity-framework - 使用 Entity Framework Code First 时,是否可以为不使用 fluent API 时创建的多对多链接表指定架构?

php - 如何根据多种规范从mysql数据库中选择行

sql - 如何在SQLite select语句中放置两个WHERE条件?

java - Hibernate 中的 setText() 是什么?

MySQL 在 .SQL 转储中的使用