programing

mysql 알파 문자로 다음과 이전 레코드 순서를 선택합니다.

css3 2023. 9. 17. 13:28

mysql 알파 문자로 다음과 이전 레코드 순서를 선택합니다.

여러 개의 회사 프로필이 있는 데이터베이스 테이블이 있는데, 이전 회사와 다음 회사 링크로 각각의 회사 프로필을 표시하고 싶습니다.현재 회사명이 'D'이면 이전 회사는 'C', 다음 회사는 'E'가 됩니다.이것 좀 도와주세요.

enter image description here

current ->  select * from `sample` where id = 4; value is D

previous - > select * from `sample` where (need to fetch record with value c ) limit 1

next - > select * from `sample` where (need to fetch record with value e ) limit 1

윈도우 기능으로 가능합니다.LAG()그리고.LEAD().

결과를 1행으로 원하는 경우:

WITH cte AS (
  SELECT *, 
         LAG(id) OVER (ORDER BY value) prev_id,
         LEAD(id) OVER (ORDER BY value) next_id
  FROM tablename         
)
SELECT * 
FROM cte
WHERE value = 'd'

결과:

> id | value | prev_id | next_id
> -: | :---- | ------: | ------:
>  4 | d     |      11 |      12

또는 두 행을 원할 경우:

WITH cte AS (
  SELECT *, 
         LAG(value) OVER (ORDER BY value) prev_value,
         LEAD(value) OVER (ORDER BY value) next_value
  FROM tablename         
)
SELECT id, value
FROM cte
WHERE 'd' IN (prev_value, next_value)

결과:

> id | value
> -: | :----
> 11 | c    
> 12 | e 

데모 보기.

언급URL : https://stackoverflow.com/questions/65502787/mysql-select-next-and-previous-record-order-by-alpha-character