mysql - sql根据其他表选择时间戳之前的最新10个条目

标签 mysql sql

我想按用户为每个错误选择 10 个以前的日志条目:

table errors
    user, timestamp, status_code
    1, 2017-01-01 20:00, 404
    2, 2017-01-01 18:00, 404
    1, 2017-01-01 15:00, 401

table log
    user, timestamp
    1, 2017-01-01 19:55
    2, 2017-01-01 19:55
    4, 2017-01-01 19:55
    1, 2017-01-01 19:54
    1, 2017-01-01 19:52
    ...

例如用户 1 在 20:00 出现错误。因此,我想在 20:00 之前为用户 1 选择最新的 10 条日志条目:

SELECT * FROM log WHERE user = 1 AND timestamp <= 20:00 ORDER BY timestamp DESC LIMIT 10

但是,我希望对状态码为 404 的错误表中的所有条目执行此操作

最佳答案

通过使用 Left Join 您可以获取基于另一个表的值。 例如:

select a., b. from first_table_name as a Left Join second_table_name As b On a.id = b.user_id where b.timestamp <= 'value'

这将解决您的难题。

关于mysql - sql根据其他表选择时间戳之前的最新10个条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46017577/

相关文章:

sql - 如何通过基于 8 列中的 2 列删除重复项来清理 BigQuery 表?

mysql - SQL 查询获取最常访问的地方 Laravel

php - mysql获取有效日期不是0000-00-00 00 :00:00的记录

mysql - sql 脚本返回的值应用作下一个脚本的输入

MySQL 与 JRuby 的问题

mysql - phpBB3.0.9如何正确导入数据库

sql - 使用脚本将 Excel 工作表放入临时表中

sql - 如何找出SQL Server执行计划中使用的中间值代表什么

php - Laravel 跟踪通知

sql - CTE和TEMP表之间的主要区别是什么?