博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MySQL查询同个表中不同分类的前几条记录
阅读量:6498 次
发布时间:2019-06-24

本文共 931 字,大约阅读时间需要 3 分钟。

hot3.png

场景:

一个文章表,存放有关PHP的文章,和MySQL的文章,想从这些文章类别各自提取N条记录出来。

测试表语句:

CREATE TABLE article(

id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
cate VARCHAR(20),
title VARCHAR(20)
);
INSERT INTO article(cate, title) VALUES
('php', 'php文章1'),
('mysql', 'mysql文章1'),
('php', 'php文章2'),
('mysql', 'mysql文章2'),
('php', 'php文章3'),
('mysql', 'mysql文章3'),
('php', 'php文章4'),
('mysql', 'mysql文章4'),
('php', 'php文章5'),
('mysql', 'mysql文章5'),
('php', 'php文章6'),
('mysql', 'mysql文章6'),
('php', 'php文章7'),
('mysql', 'mysql文章7'),
('php', 'php文章8'),
('mysql', 'mysql文章8');

方案一:

SELECT a
.id
, a
.title
, a
.cate
FROM article
AS a
LEFT
JOIN article
AS b
ON a
.cate
= b
.cate
AND a
.id
< b
.id
GROUP
BY a
.id
, a
.title
, a
.cate
HAVING
COUNT
(b
.id
)
<
5
ORDER
BY a
.id
DESC;
 
方案二:
SELECT
*
FROM article
AS a
WHERE
5
>
(
SELECT
COUNT
(
*
)
FROM article
WHERE cate
= a
.cate
AND id
> a
.id
)
ORDER
BY a
.id
DESC;
 

转载于:https://my.oschina.net/robinlin/blog/78941

你可能感兴趣的文章
Google Analytics功能篇 - 如何跟踪邮件打开率与点击率
查看>>
Code Lock
查看>>
nginx学习之静态内容篇(五)
查看>>
19.04.02笔记
查看>>
vim常用命令总结 (转)
查看>>
bzoj1688[Usaco2005 Open]Disease Manangement 疾病管理*
查看>>
使用Mycat构建MySQL读写分离、主从复制、主从高可用
查看>>
自我介绍
查看>>
ConfigrationSection配置应用示例
查看>>
Error:Execution failed for task ':app:dexDebug'. > com.android.ide.common.process.ProcessException
查看>>
【原】Java学习笔记020 - 面向对象
查看>>
开放平台鉴权以及OAuth2.0介绍
查看>>
liunx学习笔记(一:常用命令)
查看>>
《深入理解计算机系统》读书随笔-位操作
查看>>
${pageContext.request.contextPath} JSP取得绝对路径
查看>>
Android使用自定义View时:Error inflating class错误的原因。
查看>>
kail安装和vmtools安装
查看>>
.Net中如何操作IIS(源代码)
查看>>
MyBatis关联查询、多条件查询
查看>>
【leetcode】589. N-ary Tree Preorder Traversal
查看>>