본문 바로가기
MySql

MySQL-한 행 선택-선택한 행에 대해 다음 행과 이전 행 선택

by 베이스 공부 2021. 1. 28.
반응형

나는 이것을 명확히하려고 노력할 것이다.

ID를 사용하지 않고 선택한 행에서 특정 행과 이전 상대 행 하나와 선택한 행에서 다음 상대 행 하나를 선택해야합니다. 이것이 가능한가? 간단히 말해서 이전과 다음.

내가 ID를 사용할 수없는 이유는 (어쩌면 나는 그냥 어떻게하는지 모르겠다), 그들이 순차적 인 순서가 아니기 때문이다. 이 다소 미숙하고 무작위적인 예에서 볼 수 있듯이 간격이 있습니다.

TABLE <-the name of the table
+----+----------------------+-------+
| id | name                 | value |
+----+----------------------+-------+
|  1 | some_name            | asf   |
+----+----------------------+-------+
|  4 | hello                | A3r   |
+----+----------------------+-------+
|  5 | how_do_you_do        | HR5   |
+----+----------------------+-------+
|  8 | not_bad              | 00D   |
+----+----------------------+-------+
| 12 | i_like_women         | lla   |
+----+----------------------+-------+
| 13 | are_you_serious      | 1Ha   |
+----+----------------------+-------+
| 15 | nah_i_kid            | Ad4   |
+----+----------------------+-------+
| 17 | it_is_just_the_boobs | Zc5   |
+----+----------------------+-------+
| 18 | thank_god            | 102   |
+----+----------------------+-------+
| 44 | no_kidding           | jjy   |
+----+----------------------+-------+

먼저 열 중 하나에서 특정 값을 기준으로 하나의 행을 선택해야합니다. 방법을 알고 있습니다.

SELECT `value` 
FROM `TABLE` 
WHERE name = 'i_like_women'

그러면 값이 lla 인 id 12의 행 하나가 선택됩니다.

내가 필요한 것은 이름이 'not_bad'인 행과 'are_you_serious'라는 이름을 지정하지 않고 다른 행을 두 개 이상 선택하는 것입니다. 즉,이 선택된 항목에 상대적인 이전 및 다음 항목입니다.

요컨대, 하나의 값을 기준으로 3 개의 행을 선택해야합니다. 짐작할 수 있듯이 저는 MySQL을 처음 사용합니다.

시간과 관심에 감사드립니다. 나를 돕는 것을 즐기십시오.

 

해결 방법

 

이를 수행하는 가장 간단한 방법은 연속적이지는 않지만 ID가 오름차순이라는 사실을 이용하는 것입니다.

예를 들면 :

SELECT * FROM Table WHERE id = 8

UNION
--Select the first item less than 8
SELECT * FROM Table WHERE id = (SELECT MAX(id) FROM Table WHERE id < 8)

UNION
--select the first item greater than 8
SELECT * FROM Table WHERE id = (SELECT MIN(id) FROM Table WHERE id > 8)

문자열 만 아는 경우 :

DECLARE _id INT

SELECT _id = id FROM Table WHERE value = 'i_like_women'

그런 다음이 _id 를 8 대신 위의 쿼리에 입력 할 수 있습니다.

테이블과 열 이름을 구분하기 위해`를 사용할 필요가 없습니다.

 

참조 페이지 https://stackoverflow.com/questions/12430774

 

 

반응형

댓글