表 A 和表 B,为 1 对多关系,如何查询对于某个 A,多个 B 中最近更新的那一条记录
1
gzq527 2018-11-30 14:32:39 +08:00
每组最新的那一条?
|
3
gzq527 2018-11-30 15:17:16 +08:00
|
4
watzds 2018-11-30 15:23:40 +08:00
|
5
loongwang 2018-11-30 15:51:27 +08:00
|
6
loongwang 2018-11-30 15:54:14 +08:00
|
7
ackfin01 OP @gzq527
这个只 GROUP BY b.USER_ID; 还可以 SELECT ID,USER_ID,problems,last_updated_date ? |
9
killaboy712 2018-11-30 16:22:43 +08:00
先把 B 表分组排序,row_number() over(partition by xx order by 时间) as 'rk',然后 select * from B 排序后的表,where rk =1,再将其与 A 表关联
|
10
fanhaipeng0403 2018-11-30 16:24:18 +08:00
|
11
fanhaipeng0403 2018-11-30 16:24:26 +08:00
查询返回每个 id 的前 5
SELECT yourtable.* FROM yourtable INNER JOIN ( SELECT id, GROUP_CONCAT(year ORDER BY rate DESC) grouped_year FROM yourtable GROUP BY id) group_max ON yourtable.id = group_max.id AND FIND_IN_SET(year, grouped_year) BETWEEN 1 AND 5 ORDER BY yourtable.id, yourtable.year DESC |
12
ackfin01 OP |
13
lueffy 2018-11-30 18:14:40 +08:00
mark 一下
|
14
Magic347 2018-11-30 18:21:56 +08:00
@killaboy712 漂亮,这里需要用到开窗函数,分组之后的 topk 问题的典型用例
|