- | 작성순서 | 실행순서 | 실행해석 |
---|---|---|---|
1 | SELECT | FROM | 어느 테이블 대상으로 접근 할 것인가 |
2 | FROM | WHERE | 해당 테이블에서 조건에 만족하는 레코드(row) 조회 |
3 | WHERE | GROUP BY | 레코드(row)들을 기준으로 그룹화, 그룹은 하나의 row |
4 | GROUP BY | HAVING | 생성된 그룹 중 특정조건 필터 |
5 | HAVING | SELECT | 필터된 결과에 맞는 필드조회 |
6 | ORDER BY | ORDER BY | 필드를 기준으로 지정된 방식으로 정렬 |
7 | LIMIT | LIMIT | 입력된 개수 위에서부터 출력 |
SELECT A.animal_id, A.name
FROM ANIMAL_INS AS A
RIGHT JOIN ANIMAL_OUTS AS B
ON A.animal_id = B.animal_id
WHERE A.animal_id IS NULL
ORDER BY B.animal_id
SELECT A.animal_id, A.name
FROM ANIMAL_INS AS A LEFT JOIN ANIMAL_OUTS AS B
ON A.animal_id = B.animal_id
WHERE A.datetime > B.datetime
ORDER BY A.datetime
SELECT *
FROM PLACES
WHERE HOST_ID IN ( //WHERE문에서 이 목록에 대응하는 HOST_ID가 있는 행만 조회
SELECT HOST_ID //공간을 2개 이상 등록한 HOST_ID 목록을 서브 쿼리 테이블
FROM PLACES
GROUP BY HOST_ID
HAVING COUNT(ID) >= 2)
ORDER BY ID
-- 코드를 입력하세요
SELECT A.name, A.datetime
FROM ANIMAL_INS AS A LEFT JOIN animal_outs AS B
ON A.animal_id = B.animal_id
WHERE B.datetime IS NULL // 입양날짜가 비어 있는 조건
ORDER BY A.datetime
LIMIT 3
SELECT A.ANIMAL_ID, A.NAME
FROM ANIMAL_INS AS A, ANIMAL_OUTS AS B
WHERE A.ANIMAL_ID = B.ANIMAL_ID // 아이디가 동일하게 겹치는 조건
ORDER BY B.DATETIME - A.DATETIME // 차이나는 기간으로 정렬
DESC LIMIT 2
JOIN이 Mysql의 꽃(?)이라고 하던데 이전에 회사를 다니며 익혔던 엑셀문법과 많이 비슷해서 감을 잡는데 어렵지는 않았다.
서브쿼리문법은 사용하는 법을 몰라 검색해가며 풀이를 보면서 이해했다.
겹치는 부분에서 어떻게 조인할지 처음에 정하고 문제 푸는것이 중요 한 것 같다.