• EXISTS
    IN과 같이 포함하는지에 대한 조건검사 기능이지만, IN은 특정값또는 서브쿼리를 사용할 수 있고 EXISTS는 서브쿼리만 가능하다.
    하지만 서브쿼리를 사용할 경우 EXISTS가 성능이 우수하기 때문에 서브쿼리를 사용할 경우에는 EXISTS를 사용한다.

    Join과 같은 조건을 포함시키기 때문에, from테이블 데이터 중 join할 수 있는 데이터행 중 조건에 일치하는 데이터만 추출된다.

SELECT  *
FROM    tableA
WHERE   EXISTS (SELECT 1 FROM tableB WHERE title = 'TOPCREDU' AND tableA.id = tableB.id);

=> join을 사용하면 여러개의 행이 나오지만, exists를 사용하면 from테이블에서 조건과 일치하는 데이터만 추출하는 것이기 때문에 중복행을 방지할 수 있다.


  • DISTINCT
    중복 행을 제거해주는 키워드

    로 컬럼명 앞에 키워드로 사용하지만, 둘 이상의 컬럼 출력 시 모든 컬럼값이 중복되는 행만 제거해준다.

// 중복 name제거
SELECT DISTINCT name FROM member;

// name 같더라도 age 다르면 제거되지 않음
SELECT DISTINCT name, age FROM member;