色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

您的位置:首頁技術(shù)文章
文章詳情頁

mysql - SQL分組排序、隨機(jī)問題?

瀏覽:84日期:2022-06-21 10:30:39

問題描述

有一個帖子的回復(fù)表,posts(id , tid , subject ,message ,dateline),其中:id為自動增長字段,tid為該回復(fù)的主體帖子的id(外鍵關(guān)聯(lián)),subject為回復(fù)標(biāo)題,message為回復(fù)內(nèi)容,dateline為回復(fù)時間,用UNIX時間戳表示。請寫SQL,

選出按時間排序的前十個來自不同主題的最新回復(fù);

隨機(jī)選一條回復(fù)記錄;

問題解答

回答1:

目測1樓第一句不對,沒有保證不同的主題,我是這么寫的:

select * from posts p where p.dateline = (select max(dateline) from posts where tid = p.tid) order by dateline desc limit 10;

其實dateline和id應(yīng)該順序是一致的,可以考慮換成id,id上主鍵應(yīng)該效率更高:

select * from posts p where p.id = (select max(id) from posts where tid = p.tid) order by id desc limit 10;

第2句個人覺得最好還是不用ORDER BY RAND(),數(shù)據(jù)量稍微多一點就會效率低下,因為這樣寫可以會導(dǎo)致多次掃描,這樣寫可能會好一點:

SELECT * FROM posts WHERE id >= ((SELECT MAX(id) FROM posts)-(SELECT MIN(id) FROM posts)) * RAND() + (SELECT MIN(id) FROM posts) LIMIT 1;回答2:

試試看,如果表數(shù)據(jù)過大不建議使用ORDER BY RAND(),你先試試這兩句SQL行不行。希望對你有幫助.

SELET `id`,`tid`,`subject`,`message`,`dateline` FROM `posts` WHERE `tid`=NULL ORDER BY `tid`,`dateline`SELET `id`,`tid`,`subject`,`message`,`dateline` FROM `posts` WHERE `tid`=!NULL ORDER BY RAND() LIMIT 1回答3:

樓上第一條回答目測不對吧,以下個人見解,歡迎點評指教

select t2.* from (select tid,max(dateline) maxDateline from posts group by tid order by maxDateline desc limit 10)t1 inner join posts t2 on t1.tid=t2.tid and t1.maxDateline=t2.dateline

相關(guān)文章:
主站蜘蛛池模板: 亚洲国产一 | 亚洲人成在线播放网站 | 亚洲韩精品欧美一区二区三区 | 青青草原色 | 91最新网站 | 国产三级a三级三级 | 91国偷自产一区二区三区 | freesexvideo性欧美tv2021 | 92手机看片福利永久国产 | 成年人免费在线观看网站 | 高清国产美女一级a毛片录 高清国产亚洲va精品 | 精品国产一二三区 | 波多野在线视频 | 精品国产成人a区在线观看 精品国产成人a在线观看 | 日本一区深夜影院深a | 免费欧美一级 | 欧美日韩在线视频观看 | 国产一级性片 | 成年男女的免费视频网站 | 91国内精品久久久久影院优播 | 成人性视频在线三级 | 国内精品久久久久久久aa护士 | 免费一级欧美大片视频在线 | 欧美亚洲不卡 | 看全色黄大色黄大片毛片 | 久久久国产精品免费视频 | 国产一区二区三区免费在线观看 | 97在线观看视频免费 | 全部免费的毛片视频观看 | 步兵精品手机在线观看 | 欧美 日韩 国产 成人 在线观看 | 日韩欧美国产精品 | 亚洲在线精品视频 | 色悠久 | 国产三a级日本三级日产三级 | 可以看的毛片网站 | 欧美一级在线免费观看 | 91久久免费视频 | 女人被男人躁得好爽免费文 | 2022久久免费精品国产72精品 | 亚洲欧美一区二区久久香蕉 |