Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL IN() 함수로 행 생성자(Row Constructor) 비교하는 방법

MySQL에서는 IN() 함수를 단순한 값 비교뿐만 아니라 행 생성자(row constructor)를 비교하는 데에도 활용할 수 있습니다. 행 생성자는 괄호 안에 여러 개의 값을 묶어 표현한 것으로, 예를 들어 (10, 2)와 같은 형태입니다.

IN() 함수로 행 생성자 비교하기

IN() 함수 안에 행 생성자 목록을 넣으면, 왼쪽에 있는 행 생성자가 목록의 어떤 항목과 정확히 일치하는지 판단합니다. 일치하는 행이 있으면 1, 없으면 0을 반환합니다.

예제 1: 일치하는 행이 존재하는 경우

mysql> Select (10,2) IN ((5,10),(10,2),(2,10),(100,100));
+--------------------------------------------+
| (10,2) IN ((5,10),(10,2),(2,10),(100,100)) |
+--------------------------------------------+
| 1                                          |
+--------------------------------------------+
1 row in set (0.00 sec)

위 쿼리에서는 비교 대상인 (10, 2)가 목록의 두 번째 항목인 (10, 2)와 정확히 일치하므로 결과로 1이 반환됩니다.

예제 2: 일치하는 행이 없는 경우

mysql> Select (10,2) IN ((5,10),(2,10),(100,100));
+-------------------------------------+
| (10,2) IN ((5,10),(2,10),(100,100)) |
+-------------------------------------+
| 0                                   |
+-------------------------------------+
1 row in set (0.00 sec)

반면 이번에는 목록에 (10, 2)와 동일한 행이 존재하지 않으므로 결과가 0으로 반환됩니다.

핵심 정리

  • IN() 함수는 행 생성자끼리의 비교도 지원합니다.
  • 비교 시 각 행을 구성하는 모든 값이 순서까지 포함하여 정확히 일치해야 합니다.
  • 일치하면 1(TRUE), 일치하지 않으면 0(FALSE)을 반환합니다.
  • 이 기능은 여러 컬럼 조합을 한 번에 조건으로 검사할 때 유용하게 사용할 수 있습니다.