>  기사  >  데이터 베이스  >  MySQL 쿼리 데이터 병합 쿼리 결과

MySQL 쿼리 데이터 병합 쿼리 결과

coldplay.xixi
coldplay.xixi앞으로
2021-03-17 09:32:554680검색

MySQL 쿼리 데이터 병합 쿼리 결과.

  • union 키워드를 사용하면 여러 개의 select 문을 제공하고 해당 결과를 단일 결과 집합으로 결합할 수 있습니다. 병합 시 두 테이블에 해당하는 컬럼 수와 데이터 유형이 동일해야 합니다. 각 select 문을 구분하려면 Union 또는 Union all 키워드를 사용하세요.
  • Union은 all 키워드를 사용하지 않습니다. 중복된 레코드는 실행 중에 삭제되며, 반환된 모든 행은 고유합니다. all 키워드를 사용하는 기능은 중복된 행을 삭제하지 않고 결과를 자동으로 정렬하지 않는 것입니다.
    기본 구문 형식은 다음과 같습니다.
select column,...from table1union [all]select column,... from table2

(무료 학습 권장 사항: mysql 비디오 튜토리얼)

[예제 1] 가격이 9 미만인 모든 과일의 정보를 쿼리하고, s_id가 같음을 쿼리합니다. to 101 및 103 all 과일 정보의 경우 Union을 사용하여 쿼리 결과를 연결합니다. SQL 문은 다음과 같습니다.

mysql> select s_id,f_name,f_price    -> from fruits    -> where f_price <9.0
    -> union all
    -> select s_id,f_name,f_price    -> from fruits    -> where s_id in(101,103);+------+------------+---------+| s_id | f_name     | f_price |+------+------------+---------+|  104 | lemon      |    6.40 ||  101 | apple      |    5.20 ||  103 | apricot    |    2.20 ||  104 | berry      |    7.60 ||  107 | xxxx       |    3.60 ||  105 | melon      |    8.20 ||  101 | cherry     |    3.20 ||  105 | xbabay     |    2.60 ||  102 | grape      |    5.30 ||  107 | xbabay     |    3.60 ||  101 | apple      |    5.20 ||  103 | apricot    |    2.20 ||  101 | blackberry |   10.20 ||  101 | cherry     |    3.20 ||  103 | coconut    |    9.20 |+------+------------+---------+15 rows in set (0.06 sec)

union은 여러 select 문의 결과를 결과 집합으로 결합합니다. 각 Select 문의 결과를 별도로 볼 수 있습니다.

mysql> select s_id,f_name,f_price    -> from fruits    -> where f_price < 9.0;+------+---------+---------+| s_id | f_name  | f_price |+------+---------+---------+|  104 | lemon   |    6.40 ||  101 | apple   |    5.20 ||  103 | apricot |    2.20 ||  104 | berry   |    7.60 ||  107 | xxxx    |    3.60 ||  105 | melon   |    8.20 ||  101 | cherry  |    3.20 ||  105 | xbabay  |    2.60 ||  102 | grape   |    5.30 ||  107 | xbabay  |    3.60 |+------+---------+---------+10 rows in set (0.00 sec)mysql> select s_id,f_name,f_price    -> from fruits    -> where s_id in(101,103);+------+------------+---------+| s_id | f_name     | f_price |+------+------------+---------+|  101 | apple      |    5.20 ||  103 | apricot    |    2.20 ||  101 | blackberry |   10.20 ||  101 | cherry     |    3.20 ||  103 | coconut    |    9.20 |+------+------------+---------+5 rows in set (0.00 sec)

별도의 쿼리 결과에서 첫 번째 Select 문은 가격이 9 미만인 과일을 쿼리하고, 두 번째 Select 문은 공급업체 101 및 103에서 제공한 과일을 쿼리하는 것을 확인할 수 있습니다.

  • Union을 사용하여 두 개의 Select 문을 분리합니다. 실행 후 출력 결과를 단일 결과 집합으로 결합하고 중복 레코드를 삭제합니다.
  • 중복 행을 포함하려면 Union All을 사용하세요. Union은 쿼리 결과 집합에서 중복 행을 자동으로 제거합니다. 삭제하지 않고 일치하는 모든 행을 반환하려면 Union all을 사용할 수 있습니다.

[예제 2] 가격이 9 미만인 모든 과일의 정보를 쿼리하고, s_id가 101과 103인 모든 과일의 정보를 쿼리하고, Union all을 사용하여 쿼리 결과를 연결하면, SQL 문은 다음과 같습니다.

mysql> select s_id,f_name,f_price    -> from fruits    -> where f_price<9.0
    -> union all
    -> select s_id,f_name,f_price    -> from fruits    -> where s_id in(101,103);+------+------------+---------+| s_id | f_name     | f_price |+------+------------+---------+|  104 | lemon      |    6.40 ||  101 | apple      |    5.20 ||  103 | apricot    |    2.20 ||  104 | berry      |    7.60 ||  107 | xxxx       |    3.60 ||  105 | melon      |    8.20 ||  101 | cherry     |    3.20 ||  105 | xbabay     |    2.60 ||  102 | grape      |    5.30 ||  107 | xbabay     |    3.60 ||  101 | apple      |    5.20 ||  103 | apricot    |    2.20 ||  101 | blackberry |   10.20 ||  101 | cherry     |    3.20 ||  103 | coconut    |    9.20 |+------+------------+---------+15 rows in set (0.00 sec)

여기서 합계가 두 개의 select 문에서 반환된 레코드 수의 합과 같다는 것을 알 수 있습니다. 조인 쿼리 결과는 중복 행을 제거하지 않습니다.

union과 Union all의 차이점:

  • union all를 사용하는 기능은 중복 행을 삭제하는 것이 아닙니다. all 키워드 문은 실행 시 리소스가 덜 필요하므로 최대한 사용하세요.
  • 쿼리 결과에 중복된 데이터가 없을 것이라고 확신하거나 중복된 데이터를 제거할 필요가 없다고 확신하는 경우 uninon all을 사용하여 쿼리 효율성을 높여야 합니다.

더 많은 관련 무료 학습 권장 사항: mysql 튜토리얼(동영상)

위 내용은 MySQL 쿼리 데이터 병합 쿼리 결과의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 csdn.net에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제