需求如下:
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;