IN 쿼리를 사용하여 누락된 데이터에 대한 기본값이 있는 레코드 검색
IN
절을 사용하여 특정 날짜 범위 내의 사용자 온라인 활동을 쿼리할 때 IN
조건의 일부 사용자 ID에 OnlineUsage
테이블의 해당 항목이 없는 상황이 발생할 수 있습니다. 이를 처리하고 누락된 데이터에 대한 기본값을 반환하려면 수정된 쿼리 구조가 필요합니다.
표준 쿼리는 레코드가 일치하는 ID에 대한 결과만 반환할 수 있습니다. IN
목록의 모든 ID를 포함하려면 일치하는 온라인 사용 데이터가 없는 ID라도 LEFT JOIN
(또는 이에 상응하는 항목)을 활용하도록 쿼리를 재구성하세요. 핵심은 날짜 범위 조건을 WHERE
절에서 JOIN
조건
<code class="language-sql">SELECT users.Name, users.ID, IFNULL(SUM(OnlineUsage.Minutes), 0) AS MinutesOnline FROM users LEFT JOIN OnlineUsage ON users.ID = OnlineUsage.ID AND OnlineUsage.Date >= '2016-01-01 00:00:00' AND OnlineUsage.Date < '2017-01-01 00:00:00' WHERE users.ID IN (1, 2, 3, 4, 5) -- Your list of IDs here GROUP BY users.ID;</code>
이 수정된 쿼리는 LEFT JOIN
을 사용하여 모든 사용자가 포함되도록 합니다. IFNULL
함수는 SUM(OnlineUsage.Minutes)
을 대체하여 NULL
이 (온라인 사용 데이터가 없는 사용자의 경우) 0
을 반환하는 경우를 처리합니다. GROUP BY
절은 각 사용자에 대해 MinutesOnline
을 올바르게 집계하는 데 중요합니다. 이 접근 방식은 완전한 데이터 세트를 보장하여 온라인 사용 기록이 있는지 여부에 관계없이 지정된 기간 내의 모든 사용자에 대한 일관된 표현을 제공합니다.
위 내용은 누락된 데이터에 대해 IN 쿼리를 사용하여 기본값이 있는 레코드를 검색하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!