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

단일 쿼리로 여러 MySQL 테이블의 출력 결과를 한 번에 조회하는 방법

MySQL에서는 하나의 쿼리 안에 세미콜론(;)으로 구분된 여러 개의 SQL 문장을 작성할 수 있습니다. 이를 활용하면 별도의 쿼리를 여러 번 실행하지 않고도, 단일 쿼리만으로 서로 다른 테이블들의 결과를 한꺼번에 얻을 수 있습니다.

기본 원리

MySQL 클라이언트에서는 각 문장을 세미콜론으로 구분하여 한 줄에 나열하기만 하면 됩니다. 그러면 MySQL이 문장들을 순서대로 실행하고, 각 문장의 결과 집합(result set)도 순차적으로 화면에 출력해 줍니다.

실제 예제

예를 들어, 'Student_info' 테이블과 'Student_detail' 테이블에서 데이터를 가져오고 싶다면 아래와 같이 하나의 쿼리에 두 개의 SELECT 문을 세미콜론으로 구분하여 작성할 수 있습니다.

mysql> Select Name, Address from Student_info; Select Studentid, Address from Student_detail;
+---------+------------+
| Name    | Address    |
+---------+------------+
| YashPal | Amritsar   |
| Gaurav  | Chandigarh |
| Raman   | Shimla     |
| Ram     | Jhansi     |
| Shyam   | Chandigarh |
| Mohan   | Delhi      |
| Saurabh | NULL       |
+---------+------------+
7 rows in set (0.00 sec)

+-----------+------------+
| Studentid | Address    |
+-----------+------------+
| 100       | Delhi      |
| 101       | Shimla     |
| 103       | Jaipur     |
| 104       | Chandigarh |
| 105       | Chandigarh |
+-----------+------------+
5 rows in set (0.00 sec)

위 예제에서 볼 수 있듯이, 두 개의 SELECT 문이 하나의 라인에 세미콜론으로 구분되어 입력되었으며, MySQL은 첫 번째 문장인 Student_info 테이블의 조회 결과를 먼저 출력한 뒤, 이어서 두 번째 문장인 Student_detail 테이블의 조회 결과를 순서대로 보여주었습니다.

활용 시 참고 사항

이 방식은 mysql 명령줄 클라이언트처럼 여러 문장 실행을 허용하는 환경에서 동작합니다. 다만 애플리케이션 코드에서 사용하는 경우에는 드라이버나 커넥션 설정에 따라 다중 문장(multi-statement) 실행이 기본적으로 비활성화되어 있을 수 있으므로, 해당 옵션을 활성화해야 합니다. 또한 결과가 여러 개의 결과 집합으로 반환되므로, 이를 처리하는 로직에서 각 결과 집합을 순서대로 읽어야 한다는 점도 유의해야 합니다.