Mysql根据id查询上下条数据(解决上一篇下一篇问题)

需求如下:根据文章id获取其上一篇文章,下一篇文章
https://blog.csdn.net/u014710520/article/details/76532187
上一篇:xxx 下一篇:xxx
SQL语句可以像下面这样写:
access_id = 3 的上下两条数据

SELECT
    *
FROM
    press_access
WHERE
    access_id IN (
        SELECT
            CASE
            WHEN SIGN(access_id - 3) > 0 THEN MIN(access_id)
            WHEN SIGN(access_id - 3) < 0 THEN MAX(access_id)
            END AS access_id
        FROM
            press_access
        WHERE
            access_id <> 3
        GROUP BY
            SIGN(access_id - 3)
        ORDER BY
            SIGN(access_id - 3)
    )
ORDER BY
    access_id ASC;

access_id = 3 以及上下条一共三条数据

SELECT
    *
FROM
    press_access
WHERE
    access_id IN (
        SELECT
            CASE
            WHEN SIGN(access_id - 3) > 0 THEN MIN(access_id)
            WHEN SIGN(access_id - 3) < 0 THEN MAX(access_id)
        ELSE
            access_id
        END AS access_id
        FROM
            press_access
        GROUP BY
            SIGN(access_id - 3)
        ORDER BY
            SIGN(access_id - 3)
    )
ORDER BY
    access_id ASC;

MySQL实现根据当前ID读取上一条和下一条记录



以下为MySQL语句演示:
https://blog.csdn.net/lutinghuan/article/details/19083757
SELECT * FROM t_news AS n ORDER BY n.`News_ID`
当前ID为4,读取上一条记录:

    SELECT * FROM t_news AS n WHERE n.`News_ID` < 4 ORDER BY n.`News_ID` DESC  LIMIT 0,1;  
当前ID为4,读取下一条记录:

    SELECT * FROM t_news AS n WHERE n.`News_ID` > 4 ORDER BY n.`News_ID` LIMIT 0,1;  
其他数据库,不用limit,改用top关键字即可。

关于MySqL数据库查询当前数据的上一条和下一条数据
https://blog.csdn.net/w252064/article/details/79925017#commentsedit

mysql按行进行查询( 查询第几行到第几行记录 查询最后一行和第一行记录 查询前几行和后几行记录)
https://blog.csdn.net/qq_20545159/article/details/43636775

MySQL查询后10条数据并顺序输出
https://blog.csdn.net/qq_34835428/article/details/78720847

MYSQL数据库,查询一周内,合计每天的数量和出现的行数,没有记录的那一天就显示0
https://blog.csdn.net/liufeilong_sean/article/details/28607769

MySQL查询当前数据上一条和下一条的记录
https://blog.csdn.net/superit401/article/details/49797783

从mysql中查最后一条记录
https://blog.csdn.net/superit401/article/details/49797387

猜你喜欢

转载自blog.csdn.net/w690333243/article/details/81564507