You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写SQL查询,按姓名分组优先显示借书数量为1的用户记录

解法1:窗口函数方案(兼容所有支持窗口函数的主流数据库,如MySQL 8.0+、PostgreSQL、SQL Server、Oracle等)

核心逻辑是对每个用户的记录按书籍数量倒序排序,取每个用户排序第一的记录即可满足优先级要求:

SELECT Name, `No.of book`
FROM (
    SELECT
        Name,
        `No.of book`,
        -- 按用户分组,组内按书籍数量倒序排序,编号1就是优先级最高的记录
        ROW_NUMBER() OVER (PARTITION BY Name ORDER BY `No.of book` DESC) AS rank_num
    FROM TableA
) AS temp_table
WHERE rank_num = 1;

解法2:分组聚合方案(兼容所有关系型数据库,包括不支持窗口函数的低版本数据库如MySQL 5.x)

由于你的需求中优先级1>0刚好和数值大小顺序一致,直接取每个用户的最大书籍数量即可得到目标结果,写法更简洁:

SELECT Name, MAX(`No.of book`) AS `No.of book`
FROM TableA
GROUP BY Name;

注意:字段名No.of book包含特殊符号,SQL中需要用标识符转义符包裹,MySQL用反引号`,SQL Server用方括号[],Oracle用双引号"",根据你使用的数据库调整即可。

内容的提问来源于stack exchange,提问作者user3616392

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.16 07:36:03