【发布时间】:2020-01-15 03:50:33
【问题描述】:
我有一个如下所示的表格:
| thread_id | time |
| --------- | ---------- |
| 769 | 1566880174 |
| 769 | 1566880415 |
| 769 | 1566884409 |
| 769 | 1566891158 |
| 769 | 1567215554 |
| 769 | 1567227195 |
| 769 | 1567822758 |
| 773 | 1566973984 |
| 773 | 1567216614 |
| 773 | 1567216833 |
| 773 | 1567216913 |
| 773 | 1567216992 |
| 773 | 1567298692 |
| 774 | 1566977378 |
| 774 | 1567218446 |
| 774 | 1567228282 |
| 774 | 1568241410 |
| 784 | 1567300468 |
| 785 | 1567300549 |
| 785 | 1567310667 |
| 785 | 1567310734 |
| 785 | 1567461936 |
我需要获取按 thread_id 分组的第 n 个值。如果我正在寻找每个 thread_id 的第二行,输出应该是这样的
| thread_id | time |
| --------- | ---------- |
| 769 | 1566880415 |
| 773 | 1567216614 |
| 774 | 1567218446 |
| 784 | null |
| 785 | 1567310667 |
我怎样才能达到这个结果?
【问题讨论】:
-
在 (partition by ...) 上放置一个行号作为内部选择,然后使用 where 条件获取第 n 个值...先试一试,如果不成功,粘贴你试过的代码
-
如果没有 MySQL 8.0,可以使用
GROUP_CONCAT()连接它们,然后使用SUBSTRING_INDEX选择该字符串的第 N 个元素。见giannistsakiris.com/2015/01/23/… -
第n个值按照哪个顺序?
标签: mysql sql mariadb greatest-n-per-group