logo

MySQL 크로스 조인

MySQL CROSS JOIN은 둘 이상의 테이블의 모든 가능성을 결합하고 모든 기여 테이블의 모든 행을 포함하는 결과를 반환하는 데 사용됩니다. CROSS JOIN은 CARTESIAN JOIN으로도 알려져 있으며, 모든 관련 테이블의 데카르트 곱을 제공합니다. 데카르트 곱은 첫 번째 테이블에 있는 모든 행에 두 번째 테이블에 있는 모든 행을 곱한 것으로 설명할 수 있습니다. 이 절에서는 조인 조건을 사용할 수 없는 내부 조인과 유사합니다.

리눅스 파일 시스템이란 무엇인가

CROSS JOIN이 table1과 table2의 모든 레코드를 반환하고 각 행이 두 테이블의 행 조합인 다음 시각적 표현으로 이해할 수 있습니다.

MySQL 크로스 조인

MySQL CROSS JOIN 구문

CROSS JOIN 키워드는 항상 SELECT 문과 함께 사용되며 FROM 절 뒤에 작성되어야 합니다. 다음 구문은 두 조인 테이블 모두에서 모든 레코드를 가져옵니다.

 SELECT column-lists FROM table1 CROSS JOIN table2; 

위 구문에서 열 목록은 반환하려는 열 또는 필드의 이름이고 table1 및 table2는 레코드를 가져오는 테이블 이름입니다.

MySQL CROSS JOIN 예

Left Join 또는 Left Outer Join 절의 작동을 이해하기 위해 몇 가지 예를 들어 보겠습니다.

두 테이블을 조인하는 CROSS JOIN 절

여기서는 두 개의 테이블을 생성하겠습니다. '고객' 그리고 '콘택트 렌즈' 여기에는 다음 데이터가 포함됩니다.

테이블: 고객

MySQL 크로스 조인

표: 연락처

MySQL 크로스 조인

두 테이블 모두에서 모든 레코드를 가져오려면 다음 쿼리를 실행합니다.

 SELECT * FROM customers CROSS JOIN contacts; 

쿼리가 성공적으로 실행되면 다음과 같은 출력이 제공됩니다.

MySQL 크로스 조인

CROSS JOIN 문을 실행하면 42개의 행이 표시되는 것을 볼 수 있습니다. 이는 고객 테이블의 7개 행에 연락처 테이블의 6개 행을 곱한다는 의미입니다.

참고: 열이 두 번 반복되는 결과를 방지하려면 SELECT * 문 대신 개별 열 이름을 사용하는 것이 좋습니다.

MySQL CROSS JOIN의 모호한 열 문제

때로는 여러 테이블에서 선택한 열 레코드를 가져와야 하는 경우가 있습니다. 이러한 테이블에는 유사한 일부 열 이름이 포함될 수 있습니다. 이 경우 MySQL CROSS JOIN 문에서 오류가 발생합니다. 열 이름이 모호합니다. 이는 열 이름이 두 테이블 모두에 존재하고 MySQL이 표시하려는 열에 대해 혼란스러워진다는 것을 의미합니다. 다음 예에서는 이를 더 명확하게 설명합니다.

 SELECT customer_id, cust_name, income, order_id, price FROM customer CROSS JOIN orders; 

위의 CROSS JOIN은 아래 이미지와 같이 오류를 발생시킵니다.

MySQL 크로스 조인

컬럼 이름 앞에 테이블 이름을 사용하면 이 문제를 해결할 수 있습니다. 위의 쿼리는 다음과 같이 다시 작성할 수 있습니다.

 SELECT customer.customer_id, customer.cust_name, customer.income, orders.order_id, orders.price FROM customer CROSS JOIN orders; 

위 쿼리를 실행하면 다음과 같은 결과가 출력됩니다.

MySQL 크로스 조인

WHERE 절을 사용한 LEFT JOIN

WHERE 절은 다음을 반환하는 데 사용됩니다. 필터 테이블의 결과입니다. 다음 예에서는 CROSS JOIN 절을 사용하여 이를 보여줍니다.

자바에 문자열 추가하기
 SELECT customers.customer_id, customers.cust_name, customers.income, orders.order_id, orders.price FROM customers CROSS JOIN orders USING(customer_id) WHERE price&gt;1500 AND price<5000; < pre> <p>This statement gives the below result:</p> <img src="//techcodeview.com/img/mysql-tutorial/98/mysql-cross-join-7.webp" alt="MySQL CROSS JOIN"> <h3>MySQL CROSS JOIN Multiple Tables</h3> <p>We have already created two tables named &apos; <strong>customers&apos;</strong> and &apos; <strong>orders&apos;</strong> . Let us create one more table and name it as &apos; <strong>contacts&apos; that contains the following data:</strong> </p> <img src="//techcodeview.com/img/mysql-tutorial/98/mysql-cross-join-8.webp" alt="MySQL CROSS JOIN"> <p>Here, we are going to explain CROSS JOIN with LEFT JOIN using three tables. Execute the following statement to join the three table customers, orders, and contacts. In this statement, first CROSS JOIN completed between orders and contacts, and then LEFT JOIN executes according to the specified condition.</p> <pre> SELECT * FROM customer LEFT JOIN(orders CROSS JOIN contacts) ON customer.customer_id=contact_id ORDER BY income; </pre> <p>After successful execution of the above query, it will give the following output:</p> <img src="//techcodeview.com/img/mysql-tutorial/98/mysql-cross-join-9.webp" alt="MySQL CROSS JOIN"> <hr></5000;>

위 쿼리를 성공적으로 실행하면 다음과 같은 결과가 출력됩니다.

MySQL 크로스 조인