我有三张table,我需要找到一个活动的第一个日期和最后一个(最近的)日期,用户已经加入了作为一个主人和客人。换句话说,返回的数据应该如下所示:
(请注意,这是用户参加的所有活动的第一个和最后一个(最近的)日期)
+----+-----+---------+----------------------+-----------------------+-----------------------+-----------------------+
| id |name | Event | First date as a host | Recent date as a host | First date as a guest | Recentdate as a guest |
+----+-----+---------+----------------------+-----------------------+-----------------------+-----------------------+
| 1 | Teo | Dance | 2018-01-01 | 2017-01-01 | 2016-02-01 | 2017-09-09 |
| 2 | Jac | Karaoke | 2018-03-02 | 2018-01-01 | 2016-07-07 | 2017-01-06 |
| 3 | Lay | Boxing | 2017-09-09 | 2018-07-07 | 2017-01-01 | 2018-02-02 |
+----+-----+---------+----------------------+-----------------------+-----------------------+-----------------------+
table
用户
身份证件
名称
事件
身份证件
名称
开始于
事件用户
身份证件
用户id
事件id
角色
我试着听从这里的指示[https://www.periscopedata.com/blog/4-ways-to-join-only-the-first-row-in-sql]... 但是,当编写一个检索4个不同的第一行(min/max)的查询时,我总是会得到一个超级混乱的查询,甚至不起作用。。。
对于这种棘手的需求,最简单的解决方案是什么?
谢谢
1条答案
按热度按时间4uqofj5v1#
这与需要返回两组包含两个不同where子句的数据(除了它使用的where子句)的模式相同
MIN
以及MAX
而不是SUM
.