就是想要查詢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個使用者
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
select * from (
select uid,uname,title 表名 where dateline>$m4 order by dateline DESC
) a group by uid
1、不能使用聯集查詢
2、不能使用子查詢
那隻好嘗試一下為 dateline
建立逆序索引
都不能那就查兩次唄
自行腦補一下MySQL的having文法
我是 新手,不過group by這樣寫能執行嗎