Fogeaters, Light The World.

07

2017-Dec

[mysql] 서브쿼리(subquery)

작성자: title: MoonBlonix IP ADRESS: *.64.228.3 조회 수: 1890

참고: http://snowple.tistory.com/360


출처: http://blog.naver.com/kswun99/140140803029



서브쿼리(SubQuery)
 - 하나의 SQL문 안에 포함되어 있는 또 다른 SQL문을 말한다.

 Select some_column, another_column
 From table
 Where column = (Select column From table);     

 검은색 : 외부쿼리,     빨간색 : 내부 쿼리, 서브쿼리


서브쿼리 조건
 1. 서브쿼리는 언제나 Select 문 하나다.
 2. 서브쿼리는 항상 괄호 안에 있어야 한다.
 3. 서브쿼리는 세미콜론이없다. 세미콜론은 항상 전체 쿼리의 마지막에 위치한다.
 4. 서브쿼리는 쿼리문의 4 곳에 나올 수 있다.
      - Select절, 열들의 하나로 열 리스트를 선택하는 경우, From 절, Having 절.
 5. 서브쿼리는 Select뿐 아니라 Insert, Delete, Update와 함께 사용될 수 있다. 


서브쿼리 사용히 주의할 사항
 1. 서브쿼리는 괄호로 감싸서 사용한다.
 2. 서브쿼리는 단일 행(Single Row) 또는 복수 행(Multiple Row) 비교 연산자와 함께 사용 가능하다.
    단일 행 비교 연산는 서브쿼리의 결과가 반드시 1건 이하여야 하고, 
    복수 행 비교 연산자는 서브쿼리의 결과 건수과 상관없다.
 3. 서브쿼리에서는 Order by 절을 사용하지 못한다. Order by 절은 Select 절에서 오직 한개만 올 수
     있기때문에 Order by 절은 메인 쿼리의 마지막 문장에 위치해야 한다.

 

예) Where절에서 서브쿼리 사용

Select last_name, first_name
From my_contacts
WHERE zip_code = (Select zip_code From zip_code Wherer city = 'Memphis' And state = 'IN');
                               

예) 자연 조인을 포함한 서브쿼리문

Select mc.first_name, mc.last_name, mc.phone, jc.title
From job_current AS jc 
    Natural Join my_contacts AS mc
Where jc.title IN (Select title From job_listings);
 

예) Select절에서 서브쿼리 사용 

Seletc mc.first_name, mc.last_name, 
          (Select state From zip_code Where mc.zip_code = zip_code) AS state 
From my_contacts mc;



profile
profile

title: MoonBlonix

2017.12.22 18:53
*.64.228.3

성능이 느리다. 가능하면 join 을 활용하자.

참고 :: http://jason-heo.github.io/mysql/2014/05/22/avoid-mysql-in.html

List of Articles
번호 제목 글쓴이 날짜 조회 수
공지 [Web] 클라우드 IDE + 2 title: MoonBlonix 2017-06-25 15125
132 [vsftpd] root(루트) 접속 title: MoonBlonix 2018-04-15 1733
131 [php] 모바일 인식 title: MoonBlonix 2018-03-19 1364
130 [nginx] php 502 Bad Gateway 에러 해결 title: MoonBlonix 2018-03-19 1416
129 라즈베리파이를 위한 nginx와 php7.0 저장소 title: MoonBlonix 2018-02-24 1470
128 [javascript] Date사용 및 날자 계산 title: MoonBlonix 2017-12-29 1619
127 [php] 달력 구현 소스 + 1 title: MoonBlonix 2017-12-25 1859
126 [javascript] 팝업 열기 title: MoonBlonix 2017-12-18 1728
125 [php] 날짜/시간 함수정리 title: MoonBlonix 2017-12-09 1583
124 [mysql] 조건문 사용 (if, case), (isnull, ifnull, nvl) title: MoonBlonix 2017-12-07 1361
» [mysql] 서브쿼리(subquery) + 1 title: MoonBlonix 2017-12-07 1890
122 [jQuery] select box 제어 title: MoonBlonix 2017-10-14 1637
121 [mysql] mysqli_fetch_array, mysqli_fetch_assoc 비교 title: MoonBlonix 2017-10-12 1478
120 [php] 조회수 중복방지 구현 + 1 title: MoonBlonix 2017-10-06 1573
119 [mysql] JOIN 사용 + 2 title: MoonBlonix 2017-10-04 1375
118 [DataBase] ORM(Object-Relational Mappings)에 대하여 title: MoonBlonix 2017-10-04 1342
117 CK에디터 파일(백업용) file title: MoonBlonix 2017-09-25 1550
116 [javascript] js, css 파일 동적 로딩 title: MoonBlonix 2017-09-20 1397
115 [web] 페이지 속도 개선 + 1 title: MoonBlonix 2017-09-17 1378
114 [jQuery] html 갈아엎기 title: MoonBlonix 2017-09-16 1617
113 [jQuery] 성능 최적화 title: MoonBlonix 2017-09-15 1859