栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

MYSQL为最后5个不同的记录选择5个记录

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

MYSQL为最后5个不同的记录选择5个记录

在许多其他DBMS(Oracle,SQL-Server,Postgres)中,可以使用窗口函数:

SELECt id, file, folder, addedFROM  ( SELECt id, file, folder, added,DENSE_RANK() OVER (ORDER BY added DESC) AS d_rank,ROW_NUMBER() OVER (PARTITION BY added ORDER BY id DESC) AS row_no    FROM AviationImages  ) dWHERe d_rank <= 5          -- limit number of dates  AND row_no <= 5 ;        -- limit number of images per date

在MySQL中,您没有窗口函数和

OVER
子句的奢侈:

SELECt i.id, i.file, i.folder, i.addedFROM    ( SELECt DISTINCT added      FROM AviationImages      ORDER BY added DESC      LIMIT 5    ) AS da  JOIN    AviationImages AS i      ON  i.added = da.added      AND i.id >= COALESCE(          ( SELECt ti.id FROM AviationImages AS ti WHERe ti.added = da.added ORDER BY ti.id DESC LIMIT 1 OFFSET 4          ), -2147483647) ;  -- use 0 if the `id` is unsigned int

索引打开

(added, id)
将有助于提高效率-如果表使用InnoDB并且
id
为主键,则仅索引打开
(added)
就足够了。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/410823.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号