• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase
您的位置:首页 > 数据库 >Mysql > MySQL获取所有分类的前N条记录

MySQL获取所有分类的前N条记录

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-11

通过本文主要向大家介绍了mysql获取第一条记录,mysql获取记录数,mysql 获取当天记录,mysql获取所有表名,mysql 获取所有表等相关知识,希望本文的分享对您有所帮助

比如有文章表 Article(Id,Category,InsertDate),现在要用SQL找出每种类型中时间最新的前N个数据组成的集合,一段不错的代码,留存备用

SELECT A1.* 
FROM Article AS A1 
   INNER JOIN (SELECT A.Category,A.InsertDate 
         FROM Article AS A 
           LEFT JOIN Article AS B 
            ON A.Category = B.Category 
              AND A.InsertDate <= B.InsertDate 
         GROUP BY A.Category,A.InsertDate 
         HAVING COUNT(B.InsertDate) <= @N 
  ) AS B1 
  ON A1.Category = B1.Category 
    AND A1.InsertDate = B1.InsertDate 
ORDER BY A1.Category,A1.InsertDate DESC
</div>

@N 就是你要取多少条

下面是我用到了一个产品分类表中,superId是大分类,prcid是产品分类。能用SQL完成的功能就要尽量用SQL语句来完成,这既简洁又高效。

SELECT
  A1.*
FROM
  prcKx AS A1
INNER JOIN (
  SELECT
    A.superId,
    A.prcid
  FROM
    prcKx AS A
  LEFT JOIN prcKx AS B ON A.superId = B.superId
  AND A.prcid <= B.prcid
  GROUP BY
    A.superId,
    A.prcid
  HAVING
    COUNT(B.prcid) <= 7
) AS B1 ON A1.superId = B1.superId
AND A1.prcid = B1.prcid
ORDER BY
  superId,
  prcid
</div>

需求是这样的(CSDN上的一个问题):mysql中有个表:article(字段:id,type,date),type有1-10,10种类型。现在要用SQL找出每种类型中时间最新的前N个数据组成的集合。

这个问题应该有很多方法可以实现,下面就来说说在网上看到的一位高手的实现(用一条SQL语句实现的,个人感觉非常好,所以拿来和大家分享): 

select a1.* from article a1
inner join
(select a.type,a.date from article a left join article b
on a.type=b.type and a.date<=b.date 
group by a.type,a.date
having count(b.date)<=2
)b1
on a1.type=b1.type and a1.date=b1.date
order by a1.type,a1.date desc
</div>

注:上面sql语句中的2代表的就是前面提到的N。

以上所述就是本文的全部内容了,希望大家能够喜欢。

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • MySQL获取所有分类的前N条记录

相关文章

  • 2018-12-05mssql数据库系统崩溃后的一般处理步骤与方法
  • 2018-12-05Oracle 数据 使用游标
  • 2018-12-05如何强制删除或恢复SQLServer正在使用的数据库
  • 2018-12-05MySQL数据库备份工具Mydumper使用介绍
  • 2017-05-11MYSQL随机抽取查询 MySQL Order By Rand()效率问题
  • 2018-12-05MySQL OOM 系列一 Linux内存分配_MySQL
  • 2018-12-05mysql 设置查询缓存
  • 2018-12-05oracle 多个字符替换实现
  • 2018-12-05数据库更新Sqlserver脚本总结
  • 2017-05-11MySQL 加密/压缩函数

文章分类

  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase

最近更新的内容

    • MySQL组合查询中UNION排序规则示例
    • mysql 的replace into详解
    • MySQL清空缓存的命令
    • mysql免安装版的实际配置方法
    • 利用SQL注入漏洞登录后台的实现方法
    • mysql 某字段插入随机数(插入随机数到MySQL数据库)_MySQL
    • sql语句查询数据库中的表名/列名/主键/自动增长值实例
    • MySql报错Table mysql.plugin doesn’t exist的解决方法
    • MYSQL性能优化分享(分库分表)
    • 逐步分析MySQL从库com_insert无变化的原因

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有