文章詳情頁
mysql - SQL取每個外鍵前幾條記錄
瀏覽:126日期:2022-06-19 16:33:56
問題描述
如果我有張SQL表 有一列(一般是外鍵)是 B我想取B值為 1,2,3 的記錄 但是每個值最多只去8條記錄就夠了除了:
SQL全部取出來,再在程序里處理獲取每個8條(缺點:如果記錄很多的話浪費資源)
運行3條SQL,一個個值的8條取出來(缺點,如果我要取的值不止3個的話 要執行的SQL太多?)
還有其他更好的辦法嗎?
PS:我試用在MySQL用 UNION 語句行不通,因為UNION 只有最后一個limit 起作用。
問題解答
回答1:假設fid是外鍵字段,id是主鍵字段
select fid, id from (select fid, id, @rank := if(@current_fid = fid, @rank + 1, 1) as rank, @current_fid := fid from your_table order by fid, id desc) ranked where rank <= 8;
相關文章:
1. docker start -a dockername 老是卡住,什么情況?2. mysql - 記得以前在哪里看過一個估算時間的網站3. docker images顯示的鏡像過多,狗眼被亮瞎了,怎么辦?4. angular.js - angularjs如何傳遞id給另一個視圖 根據id獲取json數據?5. 使用text-shadow可以給圖片加陰影嗎?6. 在windows下安裝docker Toolbox 啟動Docker Quickstart Terminal 失?。?/a>7. nginx啟用gzip壓縮后,文件尺寸無變化.8. php - 一個操作請求多個服務如何保證數據的安全?9. java - StringBuffer轉成String,可以不同過tostring,而是通過+“”的方式轉換嗎?10. boot2docker無法啟動
排行榜
