기본 콘텐츠로 건너뛰기

라벨이 조인인 게시물 표시

SQL UNION, UNION ALL - 행 결합

1. 다른 테이블을 결합해야 할 때가 있다. 특정 조건을 기준으로 column(열)을 결합시킬 때는 JOIN을 사용한다. 하지만 row(행)을 결합시킬 때는 UNION 또는 UNION ALL을 사용하면 된다. 두 개의 SELECT문을 합치는 것이라 생각하면 된다. 2. UNION과 UNION ALL은 차이가 있다. UNION은 중복되는 row를 제거하고 결합 시키지만, UNION ALL은 중복도 포함하여 결합시킨다. 3. UNION과 UNION ALL을 사용할 때의 주의점은 아래와 같다. - SELECT문의 column 수가 같아야 한다. - column의 자료형이 같거나 호환되어야 한다. - column 이름은 최상위 SQL문의 이름을 따른다. - column 이름이 아니라 column 순서를 기준으로 결합된다. 이름이 같아도 순서가 다르면 다른 순서대로 결합된다. 4. 예제를 통해 살펴보자 아래와 같이 온라인, 오프라인 세일즈를 기록하는 테이블이 각각 있다고 하자. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 CREATE TABLE sales_online(id integer, sales integer); INSERT INTO sales_online VALUES ( 1 , 100 ); INSERT INTO sales_online VALUES ( 2 , 170 ); INSERT INTO sales_online VALUES ( 3 , 250 ); INSERT INTO sales_online VALUES ( 4 , 300 ); INSERT INTO sales_online VALUES ( 5 , 120 ); CREATE TABLE sales_offline(id integer, sales integer); INSERT INTO sales_offline VALUES ( 1 , 185 ); INSERT INTO sales_o

SQL USING - 동일한 column name을 가지는 결합조건

두 개의 테이블을 결합할 때 JOIN(조인)을 사용한다. JOIN을 할 때 두 테이블의 결합 조건은 보통 ON을 사용한다. table_A에 colname_1, colname_2의 2개의 열이 있고, table_B에는 colname_1, colname_2의 2개의 열이 있다. 두 테이블을 colname_1의 값이 일치하는 조건으로 결합해야한다고 하자. 보통 아래와 같이 "JOIN ON" 구문으로 조인을 하게 된다. 1 2 3 4 5 SELECT  a.colname_1, a.colname_2, b.colname_3 FROM  table_A a INNER JOIN table_B b ON  a.colname_1  =  b.colname_1 ; Colored by Color Scripter cs 그런데 두 테이블 모두에 colname_1이 똑같은 이름으로 있다. 이 때 USING() 구문을 사용해서 더 편리하게 조인할 수 있다. 1 2 3 4 5 SELECT  a.colname_1, a.colname_2, b.colname_3 FROM  table_A a INNER JOIN table_B b USING (colname_1) ; Colored by Color Scripter cs 상기 2개의 쿼리는 결합 조건을 나타낸다. USING() 구문을 사용해서 더 간결한 쿼리를 작성할 수 있다. USING()은 두 테이블에 같은 이름으로 존재하는 칼럼을 연결하는 결합조건을 실행할 때 사용할 수 있다. 단, MS SQL과 SYBASE에서는 지원하지 않는다. 끝.