Skip to content

SQL:Select

IN연산자 문법

특정 집합(컬럼 혹은 리스트)에서 특정 집합 혹은 리스트가 존재하는지 판단하는 연산자입니다.

column_name이 가지고 있는 집합에서 value1,2 등의 값이 존재하는지 확인:

select * from table_name where column_name in(value1,value2,...)

column_name이 가지고 있는 집합에서 table_name2 테이블의 column_name2의 집합이 존재하는지 확인:

select * from table_name where column_name in
(select column_name2 from table_name2);

중복 제거

중복을 없애는 쿼리는 #DISTINCT 또는 #GROUP BY 둘 중 하나를 사용하면 된다.

SELECT DISTINCT CITY FROM TABLE WHERE CITY_CODE = 02;
SELECT CITY FROM TABLE WHERE CITY_CODE = 02 GROUP BY CITY;

  • DISTINCT : 중복을 없애주지만 정렬을 해주지 않는다.
  • GROUP BY : 중복을 없애주고 정렬도 해준다.

이 때 GROUP BY는 그루핑 뿐만 아니라 정렬까지 수행하기 때문에 속도면에서 DISTINCT가 빠를 수 있다. 상황에 맞게 적절히 사용하자.

DISTINCT

RECURSIVE CTEs

WITH RECURSIVE cte AS (
   (SELECT tags_id FROM cpu ORDER BY tags_id, time DESC LIMIT 1)
   UNION ALL
   SELECT (
      SELECT tags_id FROM cpu
      WHERE tags_id > t.tags_id 
      ORDER BY tags_id, time DESC LIMIT 1
   )
   FROM cte t
   WHERE t.tags_id IS NOT NULL
)
SELECT * FROM cte LIMIT 50;

GROUP BY

See also