bobo2
V2EX  ›  数据库

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

  •  
  •   bobo2 · Mar 14, 2022 · 4231 views
    This topic created in 1701 days ago, the information mentioned may be changed or developed.

    请教一个 sql

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

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

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

    hay0577
    hay0577
    Mar 14, 2022
    1
    要个 sql 语句???
    sadfQED2
    sadfQED2
    Mar 14, 2022 via Android
    2
    你直接发一条数据 demo 上来,我给你写条 sql
    bobo2
    bobo2
    OP
    Mar 14, 2022
    3
    @hay313955795 是滴是滴
    bobo2
    bobo2
    OP
    Mar 14, 2022
    4
    [
    {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
    bobo2
    OP
    Mar 14, 2022
    5
    @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 之后的数据
    F281M6Dh8DXpD1g2
    F281M6Dh8DXpD1g2
    Mar 14, 2022
    6
    rank 之后取比那条的 rank 大的完事
    bobo2
    bobo2
    OP
    Mar 14, 2022
    7
    或者说,除了 limit ,还有其他方式在查询时候跳过指定条数据吗,比如在排序后跳过 3000 条,从第 3001 条开始查询,存在这种关键字吗
    sqfphoenix
    sqfphoenix
    Mar 14, 2022
    8
    select * from idx where time > (select time from idx where aid = 'xxx')
    瞎写的不知道对不对大概就这个意思吧
    bobo2
    bobo2
    OP
    Mar 14, 2022
    9
    @sqfphoenix time 可能存在相同值 >_<,怪我没说清楚
    sqfphoenix
    sqfphoenix
    Mar 14, 2022❤️1
    10
    @bobo2 不太明白,是指多个 aid 有同一个 time 吗,那对于同一个 time 来说传入的 aid 不同得到的结果也不同,这个业务逻辑是有问题的吧
    如果说只要排除自己只要改成 select * from idx where time >= (select time from idx where aid = 'xxx') and aid <> 'xxx'就可以了吧
    bobo2
    bobo2
    OP
    Mar 14, 2022
    11
    @sqfphoenix 对的,我改用 rownum 做了
    spLite
    spLite
    Mar 14, 2022
    12
    select * from (select * from idx order by time)t
    where t.aid>'47BUB4lwCAS ';
    rocbyte
    rocbyte
    Mar 14, 2022
    13
    1.先找到 aid="47BUB4lwCAS" 这条数据的时间
    2.然后用 找到的时间作为条件查询,并倒序排序
    select * from idx where time<= 1647233521466 order by time desc
    Codelike
    Codelike
    Mar 14, 2022
    14
    @sqfphoenix 不等于也不对。还是 select * from idx where time >= (select time from idx where aid = 'xxx') ,然后在逻辑里面再去掉 aid='xxx'和它之前的数据
    Ct5T66PVR1bW7b2z
    Ct5T66PVR1bW7b2z
    Mar 14, 2022❤️1
    15
    哈哈,原来真的是前端对后端表示无力,后端对前端表示无力
    MrTLJH
    MrTLJH
    Mar 14, 2022
    16
    @Codelike
    @moremoney
    就算 time 排序后,也有可能'xxx'前面有数据的 time 与'xxx'的 time 相同,也就是'xxx'这条数在相同 time 的数据里处于中间位置
    seakingii
    seakingii
    Mar 14, 2022
    17
    @Abbeyok 前两天做核酸检查,排队的时候,前面几个人一个公司的,在讨论说:后端转前端很轻松,前端转后端很难....因为后端的工作比前端难
    cz5424
    cz5424
    Mar 14, 2022
    18
    @seakingii 前端知识很容易过时,后端转前端可以直接学新知识
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   3614 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 57ms · UTC 03:51 · PVG 11:51 · LAX 19:51 · JFK 22:51
    ♥ Do have faith in what you're doing.