SELECT 1 , NULL FROM table ?

배쨈·2023년 8월 31일
1

SQL

목록 보기
5/9
SELECT A.ID,B.ID
FROM table1 A, table2 B
WHERE A.ID = B.ID

UNION ALL

SELECT A.ID, NULL
FROM table1 A
WHERE NOT EXISTS 
		(SELECT 1 FROM table2 B 
        			WHERE A.ID = B.ID)
UNION ALL 

SELECT NULL, B.ID
FROM table2 B
WHERE NOT EXISTS (SELECT 1 FROM table1 A 
					WHERE B.ID = A. ID)

혼자 SQL을 빵상빵상 알아가는 중인데 도저히 이해가 안가서 열심히 찾아보았다. 배우는게 너무 오래 걸리지만.. 그래도 한번 이해하고 까먹지 않으면 된거 아닐까


SELECT ___ FROM table

1 2... NULL ___에 들어가면 table이 가진 행의 수만큼을 해당 값으로 출력한다.

  • 다중 행 서브쿼리[EXISTS NOT EXISTS] 에서 WHERE절 내, 조건으로 사용하게 된다.
SELECT * FROM TABLE
SELECT 1 FROM TABLE

*1이 논리식에 사용 될 때, 값의 존재 유무를 알기 위해 간단하게 사용하는 방식이다.


SELECT 1 FROM exam
		WHERE examCol = 'abc'
  • 숫자 그대로가 아닌 TRUE 라고 보면 쉽다.
    exam의 examCol의 값이 abc라면, 1을 반환한다.

WHERE NOT EXIST (SELECT 1 FROM table WHERE~)

다시 처음으로 돌아와서 UNION ALL을 기준으로 2개의 쿼리를 해석해보자면,

SELECT A.ID, NULL
FROM table1 A
WHERE NOT EXISTS 
		(SELECT 1 FROM table2 B 
        			WHERE A.ID = B.ID)

table1을 불러온 후,
서브쿼리
A.ID와 B.ID이 같은 조건 (WHERE)제외 (NOT EXISTS)
A.IDA.ID행의 수 만큼 NULL을 출력하라.

profile
빵상빵상

0개의 댓글