안규 공부방

MS-SQL > Union All

등록일 : 2017-06-30 17:02 조회수 : 93,153

테이블명:table1 

------------------------------------- 
number, title, content 
------------------------------------- 
1, 연습1, 내용1 
2, 연습2, 내용2 
3, 연습3, 내용3 

------------------------------------- 
테이블 명:table2 
------------------------------------- 
num,subject,content 
------------------------------------- 
4, 내용4, 연습4 
5, 내용5, 연습5 
6, 내용6, 연습6 

다음과 같이 table1,table2에 각각의 값이 들어 있을때,'연습'이란 단어를 검색하고 싶다.

예를 들어 '연습'이란 단어를 검색했을때,,,,

table1.title 
table1.content 
table2.subject 
table3.content

를 다 검색해서 출력해 주어야 할 경우가 있을 것이다.. 
이런경우 아래와 같은 union all문을 사용하면 된다. 단, 테이블명은 리턴하지 못하는 단점이 있다. 
 

select number, title, content from table1 where title like '%연습%' or content like '%연습%' "
union all 
select number, title, content from table2 where title like '%연습%' or content like '%연습%'"

Union All 정렬방법은 아래와 같습니다. Sub Query를 이용하면 됩니다. 

SELECT A.title, A.content
    FROM (
        SELECT title, content FROM board1
        UNION ALL
        SELECT title, content FROM board2
        ) A
    ORDER BY A.title, A.content


Union All을 엘리어스로 잡은 다음에 Order by를 사용하면 된다.
Union All 테이블명을 구하고 싶다?
만약 테이블명을 구하고 싶다면 어떻게 하면 될까요? 제가 프로젝 하면서 힘들었던 내용인데 
의외로 너무나 간단한 방법을 생각해 냈습니다. 호호호,,,,도움이 되시길 바라면서,,

SELECT A.title,A.tname, A.content
    FROM (
        SELECT title, 'board1' as tname,content FROM board1
        UNION ALL
        SELECT title, 'board2' as tname,content FROM board2
        ) A
    ORDER BY A.title, A.content

어떠세요? 쉽지요?
※ 혹시 도움이 되셨다면 댓글에 한마디 남겨주세요!
작성자   비밀번호
자동글 방지     (자동글 방지 기능입니다.)
내용   댓글달기 
이메일 문의 : cak0280@nate.com  
Copyright 2000 By ENTERSOFT.KR All Rights Reserved.