- Sub Query
- 한번에 여러개의 쿼리를 처리할 수 있는 방법
- Sub Query 주의사항
- SubQuery 는 연산자 오른쪽에 위치해야 하며 반드시 괄호() 로 묶어야 한다.
- 특별한 경우를 제외하고는 SubQuery 절에는 Order By 가 올 수 없다.
- 단일행 SubQuery, 다중행 SubQuery 에 따라 연산자를 잘 선택해야 한다.
- Sub Query 종류
- 단일행 Sub Query
- 다중행 Sub Query
- 다중컬럼 Sub Query
- 상호연관 Sub Query
- 단일행 Sub Query
- 결과가 한개만 출력되는 것
- 단일행 Sub Query 의 WHERE 절에서 사용되는 연산자
- = : 값이 같으면 true
- <> : 값이 서로 다른 값이면 true
- > : 왼쪽 피연산자의 값이 크면 true
- < : 왼쪽 피연산자의 값이 작으면 true
- >= : 왼쪽 피연산자의 값이 크거나 같으면 true
- <= : 왼쪽 피연산자의 값이 작거나 같으면 true
- 단일행 Sub Query 의 WHERE 절에서 사용되는 연산자
- 결과가 한개만 출력되는 것
- 다중행 Sub Query
- 결과가 두개 이상 출력되는 것
- 다중행 Sub Query 와 함께 사용하는 연산자
- IN : 같은 값을 찾는다.
- ANY : 다수의 비교값 중 한개라도 만족하면 true, 최소값 보다 크면
- =ANY : 다수의 비교값 중 한개라도 만족하면 true, 최소값보다 크거나 같으면
- <ANY : 다수의 비교값 중 한개라도 만족하면 true, 최대값보다 작으면
- <=ANY : 다수의 비교값 중 한개라도 만족하면 true, 최대값보다 작거나 같으면
- =ANY : IN과 값은 결과를 출력
- !=ANY : NOT IN 과 같은 결과를 출력
- ALL : 전체 값을 비교하여 모두 만족해야만 true, 최대값 보다 크면
- =ALL : 전체 값을 비교하여 모두 만족해야만 true, 최대값 보다 크거나 같으면
- <ALL : 전체 값을 비교하여 모두 만족해야만 true, 최소값보다 작으면
- <=ALL : 전체 값을 비교하여 모두 만족해야만 true, 최소값보다 작거나 같으면
- =ALL : SubSELECT 의 결과가 1건이면 상관없지만, 여러건이면 오류가 발생한다.
- !=ALL : SubSELECT 의 결과가 1건이면 상관없지만, 여러건이면 오류가 발생한다.
- EXIST : Sub Query 값이 있을 경우 반환한다.
- 다중행 Sub Query 와 함께 사용하는 연산자
- 결과가 두개 이상 출력되는 것
- 다중컬럼 Sub Query
- Sub Query 결과가 여러 컬럼인 경우, 주로 Primary Key 를 여러 컬럼을 합쳐서 만들었을 경우 한꺼번에 비교하기 위해 자주 사용한다.
- 상호연관 Sub Query
- Main Query 값을 Sub Query 에 주고 Sub Query 를 수행한 후 그 결과를 다시 Main Query 로 반환해서 수행하는 쿼리이다.
- Sub Query 위치별 이름
- Sub Query 는 오는 위치에 따라 이름이 다르다.
- SELECT (Sub Query) : 1개의 결과만 반환할 경우, Scala Sub Query
- FROM (Sub Query) : Inline View
- WHERE (Sub Query) : Sub Query
- Sub Query 는 오는 위치에 따라 이름이 다르다.
- Scalar Sub Query
- Join 과 같은 결과가 나온다. 하지만 데이터 양이 적은 경우 Scalar Sub Query 방식이 Join 보다 나은 성능을 보여준다.
- 다중 INSERT - Sub Query 사용
- INSERT ALL INTO test_a (SELECT * test_b);
- Sub Query 로 CREATE TABLE 하기
- CREATE TABLE [테이블명] AS [SubQuery];
- 테이블 복사, 사본 만들떄 유용하다.
- CREATE TABLE [테이블명] AS [SubQuery];
old posting/MySQL