Summry본 문서에서는 MySQL에서 복수의 select문을 합치는 방법을 정리한다. Show send me email if you have any questions. UNION두개의 SELECT문을 서로 합치고 싶은데 그 중에서도 두개의 조회문의 중복되는 데이터를 한번만 출력할 때 사용한다.
usertable1
usertable2
위와 같은 데이터를 가진 테이블이 두 개 있을 때 두 테이블의 모든 이름을 조회하고 싶을 경우 아래처럼 쿼리문을 구성한다.
하나의 테이블에서도 SELECT문을 합칠 수 있다. usertable1에서 나이가 20살인 사람을 조회하고 동시에 가장 마지막 행을 조회하고 싶다면 아래와 같이 쿼리문을 구성한다.
UNION ALL두개의 SELECT문을 서로 합치되, 중복을 무시하고 싶을 때 사용한다.
example Reference
반응형 mysql에서 테이블을 검색해서 두개의 컬럼값을 하나로 합치고 싶을 때가 있다. 아래와 같은 테이블이 있다면,
CONCAT을 이용해서 두개의 컬럼을 하나로 합칠 수 있다.
이렇게 하면
의 결과를 얻을 수 있다. 만약 열로 된 결과를 ,구분으로 한 행으로 가져오고 싶을 땐 GROUP_CONCAT를 쓰면 된다.
이렇게하면
처럼 얻을 수 있다. 반응형 저작자표시비영리동일조건 '프로그래밍 > Server' 카테고리의 다른 글
오랜만에 쿼리짜다가 신기한 함수를 발견해서 글로 적어보기로 했다. 바로바로 GROUP_CONCAT() 함수!! GROUP_CONCAT() 살짝 알아본 바로는 SELECT 결과를 concat을 통해 한 문장으로 합쳐주는 것이다. maria db에 잘 설명되어있어서 페이지 참고하시라고 첨부합니당... https://mariadb.com/kb/en/group_concat/ group_concat 안에도 서브쿼리처럼 사용할 수 있으며, 정렬과 Limit 제한까지 가능한 모양이다.
만약 이렇게 test라는 table에 값이 있다고 치자. 얘를 조회하면 컬럼의 길이가 3으로 나뉜다. 얘를 한 컬럼으로 합치고 싶을 때 group_concat()을 사용하면 된다.
이렇게하면 test테이블에 있는 결과를 ,를 구분자로 하여서 한 컬럼으로 출력하게 된다.
이렇게 group으로 합칠 때 추가할 문자를 입력할 수 있는데, 쉼표가 나와서 썩 좋아보이진 않다... 그래도 유용하게 쓰일 듯 하다! 활용난 얘를 INSERT INTO의 VALUE값에 넣어주려고 찾게 되었다. value값에 서브쿼리를 넣는 것이 가능했는데, 서브쿼리의 결과가 1개가 아니라서 문제가 생겼었다.
insert나 update의 value에 서브 쿼리가 들어간다는 것도 신기했는데, 저렇게 조회한 결과를 하나로 합쳐서 반환해주는 함수가 있다는 것도 참 신기했다. 모르는 기능을 2개나 발견하게 되어서 기쁜 날이 되었따!! 끝~~ |