SW/MySQL

MySQL : IN 연산자 : 순서 유지 : 방법, 예제, 사용법

얇은생각 2020. 3. 6. 19:30
반응형

MySQL : IN 연산자 : 순서 유지 : 방법, 예제, 사용법

 

 

여러 개의 다른 ID로 동일한 테이블을 여러번 호출해야 하는 경우 MySQL의 기본 팁은 IN 연산자를 사용하는 것입니다. 동일한 테이블을 여러 번 호출하는 대신 레코드를 얻는 ID 목록이 있으면 IN을 사용하여 하나의 데이터베이스 호출로 결합할 수 있습니다.

SELECT * FROM foo f where f.id IN (1, 2, 3);

 

 

 

그러면 다음과 같이 이러한 행의 레코드 세트가 반환됩니다.

+----+--------+ 
| id | name   |
+----+--------+ 
| 1  | first  | 
| 2  | second |
| 3  | third  | 
+----+--------+
3 rows in set (0.00 sec)

 

 

 

그러나이 호출의 문제점은 이 ID를 IN 문에 전달하는 순서가 반환되는 방식과 아무런 차이가 없다는 것입니다. ID 2, 3, 1의 목록이 있고 이 ID에 대한 레코드를 얻으려면 IN을 사용하여 이러한 레코드를 얻을 수 있습니다.

SELECT * FROM foo f where f.id IN (2, 3, 1);

 

 

 

반환 된 레코드 세트는 기본 키를 사용하여 레코드를 호출하고 첫 번째 호출과 정확히 동일하게 돌아옵니다. 그러나 반환된 레코드 세트가 SQL을 제공한 순서를 유지하고 이 순서로 반환합니다.

+----+--------+ 
| id | name   |
+----+--------+ 
| 2  | second | 
| 3  | third  | 
| 1  | first  |
+----+--------+ 
3 rows in set (0.00 sec)

 

 

 

IN 문의 순서를 유지하려면 ORDER BY FIELD ()를 사용하여 반환 할 순서를 설정해야하므로 반환 할 필드와 값을 지정할 수 있습니다.

SELECT * FROM foo f where f.id IN (2, 3, 1) ORDER BY FIELD(f.id, 2, 3, 1);
반응형