mysql 알파 문자로 다음과 이전 레코드 순서를 선택합니다.
여러 개의 회사 프로필이 있는 데이터베이스 테이블이 있는데, 이전 회사와 다음 회사 링크로 각각의 회사 프로필을 표시하고 싶습니다.현재 회사명이 'D'이면 이전 회사는 'C', 다음 회사는 'E'가 됩니다.이것 좀 도와주세요.
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
'programing' 카테고리의 다른 글
Jquery Value match Regex (0) | 2023.09.17 |
---|---|
함수에서 반환되는 문자열 리터럴의 수명 (0) | 2023.09.17 |
Android에서 사용되는 아키텍처 패턴은 무엇입니까? (0) | 2023.09.17 |
CSS에서 @apply란 무엇입니까? (0) | 2023.09.17 |
IIS 및 정적 컨텐츠? (0) | 2023.09.17 |