Leetcode MySQL Consecutive Numbers

업데이트:

문제

Link

코드

# Write your MySQL query statement below
SELECT DISTINCT Num AS ConsecutiveNums
FROM Logs l1
WHERE (l1.Id + 1, Num) IN (SELECT * FROM Logs)
AND (l1.Id + 2, Num) IN (SELECT * FROM Logs)
#WHERE EXISTS (
#    SELECT 1 FROM Logs l2
#    WHERE l2.Id = l1.Id + 1 AND l1.Num = l2.Num
#)
#AND EXISTS (
#    SELECT 1 FROM Logs l2
#    WHERE l2.Id = l1.Id + 2 AND l1.Num = l2.Num
#)

결과

Link

설명

  1. Logs Table에서 연속된 Id에 동일한 Num이 들어가 있는 모든 Id를 반환하는 문제이다.

  2. Logs Table에 $Id + 1$과 Num, $Id + 2$와 Num이 존재하는지를 검증하면 된다.

    • WHERE 조건문의 IN과 EXISTS는 비슷한 용도로 사용하지만, 일반적으로 데이터가 많을수록 EXISTS가 적을수록 IN이 효율적이다.

댓글남기기