gpt4 book ai didi

mysql - SQL 按一定顺序查找具有两个历史记录的所有用户

转载 作者:行者123 更新时间:2023-11-29 18:35:52 31 4
gpt4 key购买 nike

我正在寻找一个在互联网上找不到的 SQL 请求(我自己也没有找到解决方案)。

我有两个不同的表用户和历史记录以及链接这两个表的表 user_history。

例如:

<小时/>

用户

    id name 
1 John
2 Edie
3 France
4 Gabriel

5艾伦

<小时/>

历史记录

    id date_entered type
1 2017-07-01 36
2 2017-07-02 52
3 2017-07-03 25
4 2017-07-04 69
5 2017-07-05 85
6 2017-07-06 74
7 2017-07-07 45
8 2017-07-08 85
9 2017-07-09 25
10 2017-07-10 78
<小时/>

USER_HISTORY

    id id_user id_history
1 1 1
2 1 2
3 1 3
4 1 4
5 2 5
6 2 6
7 1 7
8 1 8
9 2 9
10 1 10

在此示例中,所有历史记录均由用户 1 和 2 创建(用户 2 具有历史记录 5,6 和 9)。

所以问题是:

什么 SQL 请求可以让我获得历史记录类型为 25 的所有用户,然后在几天后获得历史记录类型 85?

在此示例中,只有用户 1 (John) 可以,因为他在 2017-07-03 的历史记录类型为 25,然后在 2017-07-08 的历史记录类型为 85。用户 2 (Edie) 不好,因为即使他有 25 和 85 的历史记录,第一个也是 85 和 25。

清楚了吗?你能帮我吗 ?

最佳答案

您需要与HISTORYJOIN两次,例如:

SELECT h1.id_user 
FROM (
SELECT u.id_user, h.date_entered
FROM user_history u
JOIN history h ON u.id_history = h.id
WHERE h.type = 25) h1
JOIN (
SELECT u.id_user, h.date_entered
FROM user_history u
JOIN history h ON u.id_history = h.id
WHERE h.type = 85
) h2 ON h1.id_user = h2.id_user
WHERE h1.date_entered < h2.date_entered;

这是SQL Fiddle

关于mysql - SQL 按一定顺序查找具有两个历史记录的所有用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45306019/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com