mysql - 如何根据 MySQL 中最后插入的 PK 匹配指定基于时间的范围?

标签 mysql

如果这对某些人来说是一个非常简单的问题,我深表歉意。

假设我正在使用 PK 查找来查询一个非常简单的表:

  • 用户 ID -> int (PK)
  • 正文 -> varchar
  • 时间 -> 整数

时间是标准 UNIX 时间戳。 (从纪元开始的秒数)

我想从该用户 ID 的最后一个条目中返回一个月的结果。

现在一个明显的解决方案是跟踪其他地方最近插入的时间,并在每次插入/删除或更新记录时更新它,并根据该值执行范围查询。

因此我的问题是:这是一种更简单/优雅的方法吗?我的想法是否正确,或者 MySQL 中是否有一些我不知道的内置功能?

提前致谢。

最佳答案

没有这样的内置函数。您需要做的(除非您执行您已经建议的额外表)是进行自连接。类似的东西(未经测试,来 self 的头脑)

select * 
  from [yourtable] t1
  join [yourtable] t2 
 using (userid)
 where t1.userid = [userid] 
   and t1.time is between t2.time and date_sub(t2.time, interval 1 month);

关于mysql - 如何根据 MySQL 中最后插入的 PK 匹配指定基于时间的范围?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12787897/

相关文章:

mysql - 有没有办法使用 Laravel 的 ORM 创建 STRAIGHT_JOIN?

mysql - 使用Where子句中的查询更新表

php - 检查数据库中的大量信息

javascript - JQuery无法调用隐藏目录中的PHP文件

php - 外键是或否

php - MYSQL order by 如何为列使用其他名称?

php - 通过 PHP MYSQL 查找的 HTML 表单搜索功能

php - 通过从表中传递多个分隔的逗号 id 获取记录,其中 id 在 mysql 表中也是逗号分隔的

mysql - SQL Server 2005/2008 - 通过命令行导入固定宽度的文本文件?

PHP 或 SQL 计算列元素并分开