mysql在group by分組后查詢第二條/第三條乃至每組中任意一條數據


昨天老板讓我查詢項目中(眾籌),沒人剛發起感召后,前三筆錢的入賬時間和金額,這把大哥整懵逼了,group by在某些方面是好使,但這次不能為我所用了,獲取第一筆進賬是簡單,可以用group by 直接獲取就好,但是后面的吶,我百度反思后,最終實現,上代碼,今天寫篇博客,也算是記錄一下這個知識點:

獲取第一筆進賬,我是這么搞得

select o.id,f.createdTime,round(f.money/100,0),sum(f.money) ct from(select *from organise where periodId = 251 and status = 4)o,follower f where f.status=1 and f.organiseId = o.id group by o.id order by o.id desc

organise 為發起表    follower為支持明細表

第一筆,通過對感召人進行分組  group by  o.id 排序后獲取的就是第一比的進賬時間/金額

想要獲取第二筆進賬,group by 就無能為力了,需要用上limit 1,1 ,代碼如下:

SELECT aa.* FROM follower aa WHERE aa.id=(SELECT f.id from(SELECT id FROM organise WHERE periodId=251 and status=4)o,follower f WHERE o.id = f.organiseId and f.status=1
and aa.organiseId =o.id ORDER BY f.createdTime LIMIT 1,1) ORDER BY aa.organiseId desc

思路: 先根據感召者的發起id關聯支持表,limit查出查出需要的是第幾條數據,然后再利用最外面的支持表進行反查,最后獲取自己想要的數據 

話說這樣的sql語句,是不能應用在項目中的,因為會花大量的時間,查詢這條數據得至少一份鍾的時間.請慎用,在項目中還是建議用代碼的形式去實現,僅僅想直接用sql獲取的這種方法,是耗時耗性能的不可取的!


免責聲明!

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



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