MySQL查询的问题,纠结好久了

发布于 2022-09-01 18:57:45 字数 1056 浏览 20 评论 0

就是想要查询4个月内发表文章最多的3个用户(用户当然不能重复),当然文章得是最新的,因为页面上的列表显示是用户名和最新的文章标题

php代码如下:

$m4 = 当前时间戳 - 86400 * 124;

具体sql如下:

select uid,uname,title 表名 where dateline>$m4 group by uid order by dateline desc

虽然这样我能够查询出来4个月内不重复的用户,但是文章标题却是这个用户发表的第一篇文章,不是最后发布的文章。

另外需要注意的是:
1、不能使用联合查询
2、不能使用子查询

T-SQL:

create table article
(
    `id` int(11) unsigned not null auto_increment comment '编号id',
    `subject` varchar(300) not null comment '标题',
    `uid` mediumint(8) unsigned not null comment '用户编号', 
    `uname` varchar(20) not null comment '用户名',
    `dateline` int(10) unsigned not null comment '发表时间',
    primary key(id)
) engine=myisam charset=utf8 comment='文章信息表';
    
insert article
(subject, uid, uname, dateline)
values
('标题1', 2, '用户2', 1436708324),
('标题2', 2, '用户2', 1438515690),
('标题3', 2, '用户2', 1438608818),
('标题4', 1, '用户1', 1436458649),
('标题5', 2, '用户2', 1437273021),
('标题6', 2, '用户2', 1438687437);

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

ゃ人海孤独症 2022-09-08 18:57:45

思路应该是:

  1. 先找出四个月内发表文章最多的3个用户;

  2. 再根据用户id查询该用户最新的文章标题;
    sql如下:
    找出四个月内发表文章最多的3个用户

select uid,name,count(subject) as article_count from article where dateline>$m4 group by uid order by article_count desc, dateline desc limit 3

根据用户id查询该用户最新的文章标题:

select subject from article where uid='uid' order by dateline desc limit 1
冷…雨湿花 2022-09-08 18:57:45

select * from (

select uid,uname,title 表名 where dateline>$m4  order by dateline DESC

) a group by uid

你与清晨阳光 2022-09-08 18:57:45

1、不能使用联合查询
2、不能使用子查询

那只好尝试一下为 dateline 建立逆序索引

安穩 2022-09-08 18:57:45

都不能那就查两次呗

青春有你 2022-09-08 18:57:45

自行脑补一下MySQL的having语法

谁对谁错谁最难过 2022-09-08 18:57:45

我是 新手,不过group by这样写能执行吗

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文