< 서브쿼리 위치에 따른 명칭>
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을 줌
'development♥' 카테고리의 다른 글
jstl split 값 데이터 쪼개기 한줄로나오는 데이터를 일렬로 변경하는 방법 (0) | 2023.03.31 |
---|---|
mysql groupconcat 함수 서브쿼리 데이터값 합치는 방법 (0) | 2023.03.30 |
ul li 각각 onclick tr td (2) | 2023.03.28 |
Ajax 작성법 JQuery (0) | 2023.03.16 |
자바스크립트 줄바꿈, 따옴표, 큰 따옴표, 역슬래시, 기본 출력 방법 (0) | 2023.03.14 |