首页 > 数据库 > mysql教程 > 如何使用默认值处理 IN 查询中缺失的记录?

如何使用默认值处理 IN 查询中缺失的记录?

Linda Hamilton
发布: 2025-01-17 06:36:14
原创
806 人浏览过

How to Handle Missing Records in an IN Query with Default Values?

针对 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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板