source

가장 오래된 항목과 일치하는 모든 항목 선택

lovecheck 2023. 1. 12. 22:08
반응형

가장 오래된 항목과 일치하는 모든 항목 선택

MariaDB/MySQL에는 다음과 같은 테이블이 있습니다.

table (key1, key2, date)와 함께INDEX(key1, key2)

이제 가장 오래된 엔트리를 사용합니다.

SELECT * FROM `table` ORDER BY `date` ASC LIMIT 1

마지막으로 일치하는 모든 엔트리가key1그리고.key2첫 번째 쿼리부터:

SELECT * FROM `table` WHERE `key1` = ? AND `key2` = ?

어떻게 해서든 하나의 질문으로 단순화할 수 있을까요?

그냥 사용하다join:

select t.*
from `table` t join
     (select t.*
      from `table` t
      order by `date` asc
      limit 1
     ) tt
     on t.key1 = tt.key1 and t.key2 = tt.key2;

MariaDB 10.2에서 Common Table Expressions가 도입된 이후 이 쿼리를 작성하는 다른 방법을 사용할 수 있습니다.WITH 구문을 사용하면 쿼리는 다음과 같습니다.

WITH t_oldest AS (SELECT * FROM `table` ORDER BY `date` asc LIMIT 1)
SELECT t.* FROM `table` AS t,t_oldest 
WHERE t.key1 = t_oldest.key1 AND t.key2 = t_oldest.key2;

언급URL : https://stackoverflow.com/questions/45122399/select-all-entries-that-match-the-oldest-entry

반응형