针对 IN 查询条件检索默认值
假设一个查询检索用户信息及其在指定日期范围内的在线分钟数。它使用 IN 查询根据用户 ID 过滤用户。目标是为那些没有任何匹配记录的 ID 返回默认值。
简化查询:
<code class="language-sql">SELECT users.Name, users.ID, SUM(users.Minutes) AS MinutesOnline FROM UserTable LEFT JOIN OnlineUseage ON OnlineUseage.ID = UserTable.ID WHERE OnlineUseage.Date >= '2016-01-01 00:00:00' AND OnlineUseage.Date < '2016-01-31 00:00:00' AND users.ID IN (1,2,3,4,5);</code>
修改后的查询:
为了获得所需结果,将 OnlineUseage 的条件移至 FROM 子句。这确保左连接的行为类似于内部连接,过滤掉 OnlineUseage 中没有任何匹配记录的用户。
<code class="language-sql">SELECT users.Name, users.ID, IFNULL(SUM(users.Minutes), 0) AS MinutesOnline FROM users LEFT JOIN OnlineUseage ON OnlineUseage.ID = users.ID AND OnlineUseage.Date >= '2016-01-01 00:00:00' AND OnlineUseage.Date < '2016-01-31 00:00:00' WHERE users.ID IN (1,2,3,4,5);</code>
现在,查询将检索 OnlineUseage 中具有匹配记录的用户和没有匹配记录的用户,同时将 MinutesOnline 设置为那些没有匹配记录用户的默认值 0。
以上是如何使用默认值处理 IN 查询中缺失的记录?的详细内容。更多信息请关注PHP中文网其他相关文章!