development♥

서브쿼리 사용방법 mySql 다른테이블 값 가져오기

리니❤ 2023. 3. 29. 09:20
반응형

 

 

 

< 서브쿼리 위치에 따른 명칭>

SELECT col1, (SELECT ...) -- 스칼라 서브쿼리(Scalar Sub Query): 하나의 컬럼처럼 사용 (표현 용도)

FROM (SELECT ...) -- 인라인 뷰(Inline View): 하나의 테이블처럼 사용 (테이블 대체 용도)

WHERE col = (SELECT ...) -- 일반 서브쿼리: 하나의 변수(상수)처럼 사용 (서브쿼리의 결과에 따라 달라지는 조건절)

 

--스칼라 서브쿼리 예시

 

 

 

--인라인 뷰 서브쿼리 예시

 

 

 

--일반 서브쿼리 예시

 

select

    *

from TABLE_A

where indi_id in ( select id from sub_index where id < 400 );

 

 

---활용---

 

select 해올때 서브쿼리를 이용해서 다른테이블의 값 가져오는 방법

 

예를들어

A 테이블에서

GRADE_TYPE이 10,20,30 값이 오고

10=A

20=B

30=C

일때 

 

10이면 A가 뜨게 하고싶음

 

B테이블(GRADE테이블)에있는

GRADE_NM(A,B,C)을 가져오고싶음

 

 

 

SELECT

  A.SEQ
 ,A.NO
, A.GRADE_TYPE
, (SELECT GRADE_NM FROM TB_GRADE WHERE GRADE_ID = 'P003' AND GRADE = A.GRADE_TYPE) AS GRADE_TYPE_NM
, A.CHECK_DT

,C.PART
, A.COMP_DT
, A.ADDRESS
FROM TB_PAGE A
LEFT OUTER JOIN TB_PACE C ON A.AREA_SEQ = C.AREA_SEQ
GROUP BY A.SEQ DESC

 

설명

 (SELECT GRADE_NM FROM TB_GRADE WHERE GRADE_ID = 'P003' AND GRADE = A.GRADE_TYPE) AS GRADE_TYPE_NM

 

GRADE_NM인 ABC값을 가져오는데 ABC값은 GRADE_ID가 P003 이라서 조건1 주고 

조건2 = GRADE테이블의 10,20,30값과 PAGEA테이블의 GRADE_TYPE 10,20,30값이 동일하니까 조건2를 줌

 

grade_ID가 p003이면서

grade랑 grade_type이랑 동일한것들의 

grade_nm을 가져오기 

그리고 마지막으로 alias를 grade_type_nm을 줌

 

 

 

 

반응형