Computer >> 컴퓨터 >  >> 프로그램 작성 >> MySQL

데이터 세트에서 MySQL UNION 연산자를 어떻게 사용할 수 있습니까?

<시간/>

기본적으로 MySQL UNION 연산자는 2개 이상의 SELECT 문의 결과 집합을 결합하는 데 사용됩니다. 다양한 SELECT 문 사이의 중복 행을 제거합니다. UNION 연산자 내의 각 SELECT 문은 유사한 데이터 형식 내의 결과 집합에 동일한 수의 필드를 가져야 합니다. 구문은 다음과 같습니다 -

구문

SELECT expression1, expression2, … expression_n
FROM table
[WHERE conditions]
UNION [DISTINCT]
SELECT expression1, expression2, … expression_n
FROM table
[WHERE conditions]

여기서, 표현식1, 표현식2, … 표현식_n 검색하려는 열입니다.

표, 레코드를 검색하려는 테이블입니다.

WHERE 조건 레코드가 선택되기 위해 충족되어야 하는 것은 선택 사항입니다.

별도 결과 집합에서 중복을 제거하는 것도 선택 사항이지만 기본적으로 UNION 연산자는 이미 중복을 제거하기 때문에 DISTINCT 수정자를 포함해도 UNION 연산자의 결과 집합에는 영향을 미치지 않습니다.

이 예에서 우리는 다음 데이터를 갖는 Student_detail 및 Student_info라는 두 개의 테이블입니다 -

mysql> Select * from Student_detail;
+-----------+---------+------------+------------+
| studentid | Name    | Address    | Subject    |
+-----------+---------+------------+------------+
|    101    | YashPal | Amritsar   | History    |
|    105    | Gaurav  | Chandigarh | Literature |
|    130    | Ram     | Jhansi     | Computers  |
|    132    | Shyam   | Chandigarh | Economics  |
|    133    | Mohan   | Delhi      | Computers  |
|    150    | Rajesh  | Jaipur     | Yoga       | 
|    160    | Pradeep | Kochi      | Hindi      |
+-----------+---------+------------+------------+
7 rows in set (0.00 sec)

mysql> Select * from Student_info;
+-----------+-----------+------------+-------------+
| studentid | Name      | Address    | Subject     |
+-----------+-----------+------------+-------------+
|    101    | YashPal   | Amritsar   | History     |
|    105    | Gaurav    | Chandigarh | Literature  |
|    130    | Ram       | Jhansi     | Computers   |
|    132    | Shyam     | Chandigarh | Economics   |
|    133    | Mohan     | Delhi      | Computers   |
|    165    | Abhimanyu | Calcutta   | Electronics |
+-----------+-----------+------------+-------------+
6 rows in set (0.00 sec)

이제 UNION 연산자를 사용하는 다음 쿼리는 두 테이블 모두 'studentid' 값을 모두 반환합니다.

mysql> Select Studentid FROM student_detail UNION SELECT Studentid FROM student_info;
+-----------+
| Studentid |
+-----------+
|    101    |
|    105    |
|    130    |
|    132    |
|    133    |
|    150    |
|    160    |
|    165    |
+-----------+
8 rows in set (0.00 sec)