MySQL查询的问题,纠结好久了
就是想要查询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);
回复内容:
就是想要查询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);
思路应该是:
先找出四个月内发表文章最多的3个用户;
再根据用户id查询该用户最新的文章标题;
sql如下:
找出四个月内发表文章最多的3个用户
<code>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</code>
根据用户id查询该用户最新的文章标题:
<code>select subject from article where uid='uid' order by dateline desc limit 1</code>
select * from (
<code>select uid,uname,title 表名 where dateline>$m4 order by dateline DESC</code>
) a group by uid
1、不能使用联合查询
2、不能使用子查询
那只好尝试一下为 dateline
建立逆序索引
都不能那就查两次呗
自行脑补一下MySQL的having语法
我是 新手,不过group by这样写能执行吗

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

PHP的未來將通過適應新技術趨勢和引入創新特性來實現:1)適應云計算、容器化和微服務架構,支持Docker和Kubernetes;2)引入JIT編譯器和枚舉類型,提升性能和數據處理效率;3)持續優化性能和推廣最佳實踐。

可以通過以下步驟打開 phpMyAdmin:1. 登錄網站控制面板;2. 找到並點擊 phpMyAdmin 圖標;3. 輸入 MySQL 憑據;4. 點擊 "登錄"。

PHP和Python各有優勢,選擇應基於項目需求。 1.PHP適合web開發,語法簡單,執行效率高。 2.Python適用於數據科學和機器學習,語法簡潔,庫豐富。

MySQL是一種開源的關係型數據庫管理系統,主要用於快速、可靠地存儲和檢索數據。其工作原理包括客戶端請求、查詢解析、執行查詢和返回結果。使用示例包括創建表、插入和查詢數據,以及高級功能如JOIN操作。常見錯誤涉及SQL語法、數據類型和權限問題,優化建議包括使用索引、優化查詢和分錶分區。

選擇MySQL的原因是其性能、可靠性、易用性和社區支持。 1.MySQL提供高效的數據存儲和檢索功能,支持多種數據類型和高級查詢操作。 2.採用客戶端-服務器架構和多種存儲引擎,支持事務和查詢優化。 3.易於使用,支持多種操作系統和編程語言。 4.擁有強大的社區支持,提供豐富的資源和解決方案。

PHP在現代Web開發中仍然重要,尤其在內容管理和電子商務平台。 1)PHP擁有豐富的生態系統和強大框架支持,如Laravel和Symfony。 2)性能優化可通過OPcache和Nginx實現。 3)PHP8.0引入JIT編譯器,提升性能。 4)雲原生應用通過Docker和Kubernetes部署,提高靈活性和可擴展性。

Redis 使用單線程架構,以提供高性能、簡單性和一致性。它利用 I/O 多路復用、事件循環、非阻塞 I/O 和共享內存來提高並發性,但同時存在並發性受限、單點故障和不適合寫密集型工作負載的局限性。

PHP和Python各有優勢,選擇依據項目需求。 1.PHP適合web開發,尤其快速開發和維護網站。 2.Python適用於數據科學、機器學習和人工智能,語法簡潔,適合初學者。
