
请教一个 sql
查 cc 表, 根据 time 排序后,获取 aid = xxx 之后的数据
比如排序后的总数据是这样子 [ {aid: 'a'}, {aid: 'b'}, {aid: 'c'}, ... ]
我要 aid = 'b' 之后的数据 [{aid: 'c'}, ...]
1 |
2 sadfQED2 Mar 14, 2022 via Android 你直接发一条数据 demo 上来,我给你写条 sql |
3 bobo2 OP @hay313955795 是滴是滴 |
4 bobo2 OP [ {aid: '47BUB4lwDXS', time: 1647233521466, name: 'ppp'}, {aid: '47BUB4lwDCS', time: 1647233521467, name: 'qqq'}, {aid: '47BUB4lwCAS', time: 1647233521466, name: 'sss'}, {aid: '47BUB4lQDXS', time: 1647233521462, name: 'ggg'}, ] SELECT * from idx 这样,根据 time 倒序后,获取 aid 为 47BUB4lwCAS 之后的数据 |
5 bobo2 OP @sadfQED2 [ {aid: '47BUB4lwDXS', time: 1647233521466, name: 'ppp'}, {aid: '47BUB4lwDCS', time: 1647233521467, name: 'qqq'}, {aid: '47BUB4lwCAS', time: 1647233521466, name: 'sss'}, {aid: '47BUB4lQDXS', time: 1647233521462, name: 'ggg'}, ] SELECT * from idx 这样,根据 time 倒序后,获取 aid 为 47BUB4lwCAS 之后的数据 |
6 F281M6Dh8DXpD1g2 Mar 14, 2022 rank 之后取比那条的 rank 大的完事 |
7 bobo2 OP 或者说,除了 limit ,还有其他方式在查询时候跳过指定条数据吗,比如在排序后跳过 3000 条,从第 3001 条开始查询,存在这种关键字吗 |
8 sqfphoenix Mar 14, 2022 select * from idx where time > (select time from idx where aid = 'xxx') 瞎写的不知道对不对大概就这个意思吧 |
9 bobo2 OP @sqfphoenix time 可能存在相同值 >_<,怪我没说清楚 |
10 sqfphoenix Mar 14, 2022 @bobo2 不太明白,是指多个 aid 有同一个 time 吗,那对于同一个 time 来说传入的 aid 不同得到的结果也不同,这个业务逻辑是有问题的吧 如果说只要排除自己只要改成 select * from idx where time >= (select time from idx where aid = 'xxx') and aid <> 'xxx'就可以了吧 |
11 bobo2 OP @sqfphoenix 对的,我改用 rownum 做了 |
12 spLite Mar 14, 2022 select * from (select * from idx order by time)t where t.aid>'47BUB4lwCAS '; |
13 rocbyte Mar 14, 2022 1.先找到 aid="47BUB4lwCAS" 这条数据的时间 2.然后用 找到的时间作为条件查询,并倒序排序 select * from idx where time<= 1647233521466 order by time desc |
14 Codelike Mar 14, 2022 @sqfphoenix 不等于也不对。还是 select * from idx where time >= (select time from idx where aid = 'xxx') ,然后在逻辑里面再去掉 aid='xxx'和它之前的数据 |
15 Ct5T66PVR1bW7b2z Mar 14, 2022 哈哈,原来真的是前端对后端表示无力,后端对前端表示无力 |
16 MrTLJH Mar 14, 2022 |