如何解决显示具有其他属性的组中的第一个和最后一个 mysql 记录
我想寻求帮助以显示有关在数据库中进行的查询的一些信息。我有一张名为 membervalues
的表。在这个表中,我有 4 个字段 =>(id、memberid、submit_datetime、value)。我想根据记录 value
显示每个成员的最大值和最小值 id
。例如,我有以下
id | memberid | submit_datetime | value
------------------------------------------------
1 | 1 | 2018-01-18 09:44:00 | 86
2 | 2 | 2018-01-18 10:32:00 | 95
3 | 3 | 2018-01-18 11:19:00 | 74
4 | 1 | 2018-01-18 17:57:00 | 84
5 | 3 | 2018-01-18 18:31:00 | 96
7 | 1 | 2018-01-19 06:31:00 | 86
8 | 2 | 2018-01-19 07:31:00 | 94
9 | 1 | 2018-01-19 08:31:00 | 87
memberid | min_record_value | max_record_value
------------------------------------------------
1 | 86 | 87
2 | 95 | 94
3 | 74 | 96
我可以通过带有 GROUP BY memberid 的 min(id) 和 max(id) 获取最小和最大 id,但是我无法按照上面的要求确定如何使用它获取记录值。在搜索时,我遇到了 mysql - join first and last records by group type? 并尝试选择与
类似的方法select x2.memberid,x2.value as min_record_value,y2.value as max_record_value
from (select *
from (select memberid,value
from membervalues
order by 1,2) x1
group by 1) x2
join (select *
from (select memberid,2 desc) y1
group by 1) y2 on y2.memberid = x2.memberid
但它只返回第一行的值,如下所示。
memberid | min_record_value | max_record_value
------------------------------------------------
1 | 86 | 86
2 | 95 | 95
3 | 74 | 74
任何帮助将不胜感激。谢谢
解决方法
您可以使用 row_number()
窗口函数为每个 1
的每个记录分配一个编号,从 memberid
开始,具体取决于按 {{1 排序时的记录位置}} 和 submit_datetime
(解决可能的联系)。一次以升序表示最小值,一次以降序表示最大值。然后,您可以在公共 id
和该数字上加入派生表,并过滤该数字为 memeberid
。
1
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。