mysql分組取用戶的前3條數據


現有:user 用戶表   user_msg 用戶文章表

 

需求:批量取一定時間范圍內注冊的各個用戶發表的前3條文章

 

select * from user_msg a where a.u_id in (SELECT id FROM `user` where rec_time>="2021-11-07")  and
(
  select count(id) from user_msg b where b.u_id in (SELECT id FROM `user` where rec_time>="2021-11-07")  and  b.u_id=a.u_id  and  b.id<a.id
)<3

ORDER BY a.rec_time desc;

 

理解:針對同一個用戶,將user_msg分成a、b兩個相同臨時表,相互比對,取出滿足a表中id比b表id大的並且大的數量小於3條的記錄。

假如兩個表都是升序排列(方便理解),a表第4條的id肯定比b表的前三條id大,count以后應該是3,以此類推,第N條就是N-1,

所以滿足條件就是前三條。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM