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

MySQL에서 3개 이상의 열 값이 TRUE인 행을 조회하는 쿼리 작성 방법

여러 개의 불리언(Boolean) 열 중에서 3개 이상의 값이 TRUE인 행을 찾으려면 WHERE 절을 활용하면 됩니다. MySQL에서는 불리언 값을 정수(1 또는 0)로 처리하기 때문에, 각 열의 값을 단순히 더한 뒤 그 합계를 조건으로 비교하는 방식을 사용할 수 있습니다.

먼저 예제에 사용할 테이블을 생성해 보겠습니다.

mysql> create table DemoTable
    -> (
    -> isMarried boolean,
    -> isActive boolean,
    -> isMember boolean,
    -> isOn boolean
    -> );
Query OK, 0 rows affected (0.61 sec)

INSERT 명령어를 사용해 테이블에 몇 개의 레코드를 삽입합니다.

mysql> insert into DemoTable values(true,false,true,false);
Query OK, 1 row affected (0.14 sec)

mysql> insert into DemoTable values(false,false,false,false);
Query OK, 1 row affected (0.14 sec)

mysql> insert into DemoTable values(true,true,true,true);
Query OK, 1 row affected (0.24 sec)

mysql> insert into DemoTable values(true,false,false,true);
Query OK, 1 row affected (0.55 sec)

SELECT 문으로 테이블의 모든 레코드를 확인합니다.

mysql> select *from DemoTable;

출력 결과

+-----------+----------+-----------+------+
| isMarried | isActive | isMember  | isOn |
+-----------+----------+-----------+------+
| 1         | 0        | 1         | 0    |
| 0         | 0        | 0         | 0    |
| 1         | 1        | 1         | 1    |
| 1         | 0        | 0         | 1    |
+-----------+----------+-----------+------+
4 rows in set (0.00 sec)

다음은 3개 이상의 열 값이 TRUE인 행을 조회하는 쿼리입니다. 네 개의 불리언 열을 모두 더한 값이 3보다 크거나 같은지를 WHERE 절에서 판별합니다.

mysql> select *from DemoTable where isMarried+isActive+isMember+isOn >=3;

출력 결과

+-----------+----------+-----------+------+
| isMarried | isActive | isMember  | isOn |
+-----------+----------+-----------+------+
| 1         | 1        | 1         | 1    |
+-----------+----------+-----------+------+
1 row in set (0.00 sec)

위 결과에서 볼 수 있듯이, 네 개의 열이 모두 TRUE인 세 번째 행만 조건을 만족하여 반환되었습니다. 이처럼 불리언 열의 산술 합을 이용하면 CASE 문이나 여러 개의 OR 조건을 일일이 작성하지 않고도 간결하게 원하는 조건의 행을 필터링할 수 있습니다.