반응형
여러 개의 다른 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);
반응형
'SW > MySQL' 카테고리의 다른 글
MySQL : 가장 높은 ID 값으로 로우 데이터 업데이트 하는 방법 : 예제 (0) | 2020.03.08 |
---|---|
MySQL : Group by : 각 그룹에서 최신 데이터 가져오기 (0) | 2020.03.07 |
MySQL : 제약조건 : 개념, 예제, 종류 (0) | 2020.02.04 |
MySQL : join : 개념, 예제, 사용방법, 장점 (0) | 2020.02.03 |
MySQL : group by, having : 개념, 예제, 사용법 (0) | 2020.02.01 |