MySQL select before after row

前端 未结 4 1319
北荒
北荒 2020-12-15 08:28

This is the example table:

Column             | 1st record | 2nd record | 3rd record | 4th record | etc
id (primary) | 1 | 5
相关标签:
4条回答
  • 2020-12-15 08:41

    This works:

    select a.id, a.name, a.date, a.callValue 
    FROM
    (
        select @r0 := @r0 + 1 as rownum, id, name, date, callValue from TABLE
        , (SELECT @r0 := 0) r0
    ) a,
    (
        select @r1 := @r1 + 1 rownum, id, name, date, callValue from TABLE
        , (SELECT @r1 := 0) r1 
    ) b
    where b.callValue = val3 and b.rownum between (a.rownum-1 and a.rownum+1)
    

    It expands the table into 2 dimensions so you can compare the rows in the fist table to any set of rows from the second.

    0 讨论(0)
  • 2020-12-15 08:45

    Once you have the id 8, you should be able to do a variation on:

    select * from mytable
    where id < 8
    order by id desc
    limit 1
    

    and:

    select * from mytable
    where id > 8
    order by id asc
    limit 1
    

    for the previous and next record.

    0 讨论(0)
  • 2020-12-15 08:57
    select *
    from callvalue
    where id <  maxd
    (
    select max(id) as maxd
    from callvalue
    where id = maxd
    )
    
    0 讨论(0)
  • 2020-12-15 08:59

    Try this:

    select * from test where callValue = 'val3'  
    union all  
    (select * from test where callValue < 'val3' order by id desc limit 1) 
    union all  
    (select * from test where callValue > 'val3' order by id asc limit 1) 
    

    or

    select * from test where id = 8
    union all  
    (select * from test where id < 8 order by id desc limit 1) 
    union all  
    (select * from test where id > 8 order by id asc limit 1) 
    
    0 讨论(0)
提交回复
热议问题