V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
kikione
V2EX  ›  程序员

SQL 分组查询后取每组的前 N 条记录

  •  
  •   kikione · 2022-06-21 23:19:19 +08:00 · 1729 次点击
    这是一个创建于 885 天前的主题,其中的信息可能已经有所发展或是发生改变。

    怎么写效率快?有内容表和评论表两张。

    有一批内容,每个内容都有一批评论,我要查出每个内容的最新三条评论,要怎么查?

    怎么写效率高

    6 条回复    2022-06-22 15:07:01 +08:00
    adoal
        1
    adoal  
       2022-06-21 23:31:51 +08:00   ❤️ 2
    用窗口函数
    liuzhaowei55
        2
    liuzhaowei55  
       2022-06-21 23:42:46 +08:00 via Android
    mysql 一条语句写不出来,pgsql 好像是可以的,没有细研究过。
    Suddoo
        3
    Suddoo  
       2022-06-21 23:48:02 +08:00   ❤️ 1
    按内容分组,取每组前 N 个 https://www.cnblogs.com/willingtolove/p/10623841.html
    Saxton
        4
    Saxton  
       2022-06-22 09:01:02 +08:00
    窗口函数就可以做到,如果不用窗口就得子查询。
    opendragonhuang
        5
    opendragonhuang  
       2022-06-22 09:15:35 +08:00   ❤️ 1
    用窗口函数。MySql 8.0 以上版本用 row_number 函数, 具体用法可以参考 3 楼。MySQL 5.7 的可以参考: https://wenku.baidu.com/view/67428109463610661ed9ad51f01dc281e53a56d6.html 手动实现 row_number 函数。
    seth19960929
        6
    seth19960929  
       2022-06-22 15:07:01 +08:00
    用开窗函数
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2655 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 11:05 · PVG 19:05 · LAX 03:05 · JFK 06:05
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.