이 기사는 MySQL의 조인 쿼리 및 집합 작업을 안내합니다. 도움이 되기를 바랍니다. Join 쿼리 Join 쿼리는 두 개 이상의 테이블 사이에서 일치하는 쿼리를 의미합니다. 일반적으로 수평 작업이라고 합니다. 즉, 최종 결과에는 이러한 테이블의 모든 열이 포함됩니다. 조인 연산에는 교차 조인, 내부 조인, 외부 조인의 세 가지 종류가 있습니다. [관련 추천: mysql 동영상 튜토리얼] 교차 조인은 CROSS JOIN이라고 합니다. 두 테이블에 대해 데카르트 곱을 수행하며, 다음과 같이 두 테이블의 모든 열 구성을 반환합니다. 왼쪽 테이블에 n개의 데이터가 있고 오른쪽 테이블에 m개의 데이터가 있는 경우 최종 결과는 n*m이지만 자신에게 연결할 수도 있습니다. 최종 결과는 다음 명령문과 같이 n*n입니다. CROSS JOIN,他对两个表执行笛卡儿积,他将返回两个表中所有列的组成,比如左表中有n条数据,右表中有m条数据,那么最终结果就是n*m条,但是也可以自己与自己联结,那么最终结果就是n*n条,比如下面语句。select * from orders as a cross join orders as b; +---------+--------+---------+--------+ | orderId | userId | orderId | userId | +---------+--------+---------+--------+ | 10007 | 2 | 10001 | 1 | | 10006 | 4 | 10001 | 1 | ..... | 10002 | 1 | 10007 | 2 | | 10001 | 1 | 10007 | 2 | +---------+--------+---------+--------+ 49 rows in set (0.01 sec)由于orders表中有7条数据,那么最后将生成49条数据,还有一种写法是下面这样的。mysql> select * from orders as a ,orders as b;他们的结果都相同,只是写法不同,上面的写法是在1989年,美国国家标准学会对SQL进行的规范,称之为ANSI SQL 89标准,而第一种写法是92年规定的。 交叉联结有个用处就是快速生成重复数据,比如下面语句。insert orders select a.orderId,a.userId from orders as a ,orders as b limit 10;下面就是内联结,分为两部,首先产生笛卡儿积,然后在根据后面ON的过滤条件来过滤,他产生两个表中具有相同记录的值。 在ON后面除了等于运算符 (=) 之外,还可以使用其他运算符,例如大于 ( >)、小于 ( ) 和不等于 ( ) 运算符来构成连接条件。 最后一个是OUTER JOIN,可以按照一些过滤条件来匹配表之间的数据,与INNER JOIN不同的是,在通过OUTER JOIN添加的保留表中存在未找到的匹配数据,MySQL支持LEFT OUTER JOIN、RIGHT OUTER JOIN,写的时候可以省略OUTER 。 下面是LEFT JOIN所示图,LEFT JOIN返回左表 (table1) 中的所有记录,以及右表 (table2) 中的匹配记录。 下面是RIGHT JOIN所示图,RIGHT JOIN返回右表 (table2) 中的所有记录,以及左表 (table1) 中的匹配记录。 集合操作 MySQL中有个UNION运算符,用于组合2个或多个SELECT结果集,并删除SELECT语句之间的重复行,使用他时候要遵循以下基本规则: 所有SELECTCREATE TABLE t1 ( id INT PRIMARY KEY ); CREATE TABLE t2 ( id INT PRIMARY KEY ); INSERT INTO t1 VALUES (1),(2),(3); INSERT INTO t2 VALUES (2),(3),(4);주문 테이블에는 7개의 데이터가 있으므로 결국 49개의 데이터가 생성됩니다. 또 다른 작성 방법은 다음과 같습니다. SELECT id FROM t1 UNION SELECT id FROM t2;결과는 같지만 작성 방법이 다릅니다. 위 작성 방법은 1989년 미국 표준 협회에서 SQL용으로 표준화한 것으로, ANSI SQL 89 표준이라고 하며, 1992년에 최초의 작성 방법이 규정되었습니다. 교차 조인은 다음 문과 같이 반복되는 데이터를 빠르게 생성하는 데 유용합니다. +----+ | id | +----+ | 1 | | 2 | | 3 | | 4 | +----+ 4 rows in set (0.00 sec)다음은 두 부분으로 나누어진 내부 조인입니다. 먼저 데카르트 곱을 생성한 후 후속 ON 필터링 조건에 따라 필터링하여 두 부분에서 동일한 레코드를 갖는 값을 생성합니다. 테이블. ON 뒤에는 등호 연산자(=) 외에도 보다 큼( >), 보다 작음( )과 같은 다른 연산자를 사용할 수도 있습니다. 및 같지 않음( ) 연산자를 사용하여 조인 조건을 구성합니다. 마지막은 OUTER JOIN으로 일부 필터링 조건에 따라 테이블 간 데이터를 일치시킬 수 있습니다. INNER JOIN과 달리 OUTER JOIN을 통해 추가된 예약된 테이블에는 일치하는 데이터가 없습니다. MySQL은 LEFT OUTER JOIN, RIGHT OUTER JOIN을 지원합니다. 작성할 때 OUTER를 생략할 수 있습니다. 다음은 LEFT JOIN의 다이어그램입니다. LEFT JOIN은 왼쪽 테이블(table1)의 모든 레코드와 오른쪽 테이블(table2)의 일치하는 레코드를 반환합니다. 아래 이것은 RIGHT JOIN에 표시된 그림입니다. RIGHT JOIN은 오른쪽 테이블(table2)의 모든 레코드와 왼쪽 테이블(table1)의 일치하는 레코드를 반환합니다. 집합 연산 MySQL에는 2개 이상의 SELECT 결과 집합을 결합하고 SELECT 문 사이의 중복 행을 삭제하는 데 사용되는 UNION 연산자가 있습니다. 이를 사용할 때 다음 기본 규칙을 따르십시오. 모두 숫자입니다. SELECT 문에 나타나는 열의 순서는 동일해야 합니다. 🎜🎜열도 동일한 데이터 유형이어야 합니다. 🎜🎜🎜지금 아래와 같은 테이블이 있다면🎜SELECT id FROM t1 UNION ALL SELECT id FROM t2;🎜다음 SQL을 실행해 보세요🎜+----+ | id | +----+ | 1 | | 2 | | 3 | | 2 | | 3 | | 4 | +----+ 6 rows in set (0.00 sec)🎜최종 결과는 이렇습니다. 🎜rrreee🎜UNION 문은 기본적으로 설정된 결과 행에서 중복 데이터를 제거하지만 UNION ALL을 사용하여 중복 레코드를 얻을 수 있습니다. 🎜rrreee🎜결과는 다음과 같습니다🎜rrreee🎜UNION과 JOIN의 기본적인 차이점은 UNION은 결과 집합을 가로로 결합하는 반면, JOIN 문은 결과 집합을 세로로 결합한다는 것입니다. 🎜🎜🎜🎜🎜🎜원본 주소: https://juejin.cn/post/7001772087534682143🎜🎜작성자: i Listen to the Wind Passing Night🎜🎜🎜더 많은 프로그래밍 관련 지식을 보려면 🎜프로그래밍 영상🎜을 방문하세요! ! 🎜