我只是一个小小的前端,怎奈 sql 竟找上了我

2022-03-14 11:43:10 +08:00
 bobo2

请教一个 sql

查 cc 表, 根据 time 排序后,获取 aid = xxx 之后的数据

比如排序后的总数据是这样子 [ {aid: 'a'}, {aid: 'b'}, {aid: 'c'}, ... ]

我要 aid = 'b' 之后的数据 [{aid: 'c'}, ...]

3022 次点击
所在节点    数据库
18 条回复
hay313955795
2022-03-14 12:30:32 +08:00
要个 sql 语句???
sadfQED2
2022-03-14 12:50:02 +08:00
你直接发一条数据 demo 上来,我给你写条 sql
bobo2
2022-03-14 12:51:08 +08:00
@hay313955795 是滴是滴
bobo2
2022-03-14 12:54:21 +08:00
[
{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 之后的数据
bobo2
2022-03-14 12:55:08 +08:00
@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 之后的数据
liprais
2022-03-14 12:57:27 +08:00
rank 之后取比那条的 rank 大的完事
bobo2
2022-03-14 13:04:28 +08:00
或者说,除了 limit ,还有其他方式在查询时候跳过指定条数据吗,比如在排序后跳过 3000 条,从第 3001 条开始查询,存在这种关键字吗
sqfphoenix
2022-03-14 13:19:19 +08:00
select * from idx where time > (select time from idx where aid = 'xxx')
瞎写的不知道对不对大概就这个意思吧
bobo2
2022-03-14 13:26:11 +08:00
@sqfphoenix time 可能存在相同值 >_<,怪我没说清楚
sqfphoenix
2022-03-14 13:34:14 +08:00
@bobo2 不太明白,是指多个 aid 有同一个 time 吗,那对于同一个 time 来说传入的 aid 不同得到的结果也不同,这个业务逻辑是有问题的吧
如果说只要排除自己只要改成 select * from idx where time >= (select time from idx where aid = 'xxx') and aid <> 'xxx'就可以了吧
bobo2
2022-03-14 14:44:49 +08:00
@sqfphoenix 对的,我改用 rownum 做了
spLite
2022-03-14 16:24:06 +08:00
select * from (select * from idx order by time)t
where t.aid>'47BUB4lwCAS ';
moremoney
2022-03-14 16:45:39 +08:00
1.先找到 aid="47BUB4lwCAS" 这条数据的时间
2.然后用 找到的时间作为条件查询,并倒序排序
select * from idx where time<= 1647233521466 order by time desc
Codelike
2022-03-14 17:10:57 +08:00
@sqfphoenix 不等于也不对。还是 select * from idx where time >= (select time from idx where aid = 'xxx') ,然后在逻辑里面再去掉 aid='xxx'和它之前的数据
Abbeyok
2022-03-14 17:25:04 +08:00
哈哈,原来真的是前端对后端表示无力,后端对前端表示无力
MrTLJH
2022-03-14 18:28:04 +08:00
@Codelike
@moremoney
就算 time 排序后,也有可能'xxx'前面有数据的 time 与'xxx'的 time 相同,也就是'xxx'这条数在相同 time 的数据里处于中间位置
seakingii
2022-03-14 21:24:07 +08:00
@Abbeyok 前两天做核酸检查,排队的时候,前面几个人一个公司的,在讨论说:后端转前端很轻松,前端转后端很难....因为后端的工作比前端难
cz5424
2022-03-14 21:52:11 +08:00
@seakingii 前端知识很容易过时,后端转前端可以直接学新知识

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/840182

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX