首页 > 解决方案 > 如何在我的条件使用同一表的另一行数据的情况下获取数据?

问题描述

我有这张桌子:

| id | created_at                 | updated_at                 | visited_page | visited_date | user_id |
+----+----------------------------+----------------------------+-------------------+--------------+-----
|  1 | 2020-12-28 18:09:40.243560 | 2020-12-28 18:09:40.244170 |            1 | 2020-12-28   |   78557 |
|  2 | 2020-12-28 18:10:41.290824 | 2020-12-28 18:10:41.291217 |            1 | 2020-12-29   |   78557 |
|  3 | 2020-12-28 18:19:36.948853 | 2020-12-28 18:19:36.949289 |            3 | 2020-12-29   |   78557 |
+----+----------------------------+----------------------------+-------------------+--------------+-----

在这里,我想获取同一用户访问的两个不同页面之间user_idsupdated_at差异在特定日期大于 6 分钟的位置(在上表中,日期 = 2020-12-29)。

请解释一下这个查询在 SQL 中的样子?

标签: mysqlsql

解决方案


没有测试,但这样的事情应该是 naswer :

SELECT DISTINCT t1.user_id
FROM table1 t1
JOIN table1 t2
    ON t1.visiated_date = t2.visited_date
    AND TIMESTAMPDIFF(MINUTE, t1.updated_at, t2.updated_at) > 6
    AND t1.visited_page <> t2.visited_page
    AND t1.date = 2020-12-29

推荐阅读