선택을 병합하려면 GROUP BY 절을 사용해야 합니다. 개념을 이해하기 위해 테이블을 만들어 보겠습니다. 테이블을 생성하는 쿼리는 다음과 같습니다 -
mysql> 테이블 생성 MergingSelectDemo -> ( -> RoomServicesId int, -> RoomId int, -> ServiceId int -> ), 쿼리 확인, 영향을 받는 행 0개(1.98초)
이제 insert 명령을 사용하여 테이블에 일부 레코드를 삽입할 수 있습니다. 쿼리는 다음과 같습니다 -
mysql> Insert into MergingSelectDemo values(10,10,10);Query OK, 1개의 row가 영향을 받음(0.29초)mysql> insert into MergingSelectDemo values(20,10,20);Query OK, 1개의 row가 영향을 받음(0.22초) )mysql> MergingSelectDemo 값에 삽입(30,10,30); 쿼리 확인, 1행 영향(0.14초) mysql> MergingSelectDemo 값에 삽입(50,10,50), 쿼리 확인, 1행 영향(0.19초) mysql> Insert into MergingSelectDemo values(110,20,20);Query OK, 1개의 row가 영향을 받았습니다(0.14초)mysql> insert into MergingSelectDemo values(120,20,30);Query OK, 1개의 row가 영향을 받았습니다(0.37초)
select 문을 사용하여 테이블의 모든 레코드를 표시합니다. 쿼리는 다음과 같습니다 -
mysql> select *from MergingSelectDemo;
다음은 출력입니다 -
+----------------+--------+-----------+| 룸서비스 아이디 | 룸아이디 | 서비스 ID |+----------------+--------+-----------+| 10 | 10 | 10 || 20 | 10 | 20 || 30 | 10 | 30 || 50 | 10 | 50 || 110 | 20 | 20 || 120 | 20 | 30 |+----------------+--------+-----------+6행 세트(0.00초)사전>선택을 병합하는 쿼리는 다음과 같습니다. −
mysql> MergingSelectDemo에서 RoomId 선택 -> 여기서 ServiceId IN(10,20,30) -> RoomId별로 그룹화 -> HAVING COUNT(*)=3;다음은 출력입니다 -
+--------+| 방 ID |+--------+| 10 |+--------+1 행 세트(0.15초)