SQL 테이블에서 최대값을 갖는 고유 행을 효율적으로 추출
SQL 테이블에는 동일한 열 값을 가진 여러 행이 포함되는 경우가 많습니다. 이러한 테이블에서 데이터를 검색할 때 최신 정보가 포함된 행만 추출하거나 특정 열의 최대값을 추출할 수 있는 것이 중요합니다. 이는 데이터가 지속적으로 업데이트되는 시나리오에서 특히 유용합니다.
"UserId", "Value" 및 "Date" 열을 포함하는 "mytable"이라는 테이블이 있다고 가정합니다. 각 고유 "UserId"에 대한 최대 "Date" 값에 해당하는 "UserId" 및 "Value"를 검색하기 위해 하위 쿼리에 의존하지 않고 효율적인 SQL 기술을 활용할 수 있습니다.
<code class="language-sql">SELECT t1.* FROM mytable t1 LEFT OUTER JOIN mytable t2 ON (t1.UserId = t2.UserId AND t1."Date" < t2."Date") WHERE t2.UserId IS NULL;</code>
이 쿼리에서는 "mytable"의 두 인스턴스(t1 및 t2) 사이에 왼쪽 외부 조인을 사용합니다. 조인 조건은 t2가 더 큰 "Date" 값을 갖는 t1의 행과만 일치하도록 보장합니다. 그런 다음 WHERE 절은 t2에서 더 큰 "Date" 값과 일치하는 행이 있는 모든 행을 필터링하여 각 고유 "UserId"에 대해 가장 큰 "Date" 값에 해당하는 행만 남깁니다.
여러 행의 최대 날짜가 동일한 상황을 고려하는 또 다른 방법은 다음과 같습니다.
<code class="language-sql">SELECT t1.* FROM mytable t1 LEFT OUTER JOIN mytable t2 ON t1.UserId = t2.UserId AND ((t1."Date" < t2."Date") OR (t1."Date" = t2."Date" AND t1.id < t2.id)) WHERE t2.UserId IS NULL;</code>
이 변형에서는 보다 세부적인 조인 조건을 사용하여 동일한 최대 "날짜" 값을 가진 잠재적인 중복을 처리합니다. 추가 조건(t1.id id이 기본 키 또는 고유 식별자라고 가정)
이러한 방법을 통해 SQL 테이블에서 최대 날짜 값을 갖는 고유 행을 효율적으로 추출하여 복잡한 하위 쿼리를 피하고 쿼리 효율성을 높일 수 있습니다.
위 내용은 SQL의 최대 날짜 값으로 고유 한 행을 효율적으로 가져 오는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!