文章详情页
mysql - SQL取每个外键前几条记录
浏览:328日期: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. python - pandas读取中文的时候乱码 要如何解决?2. python - 如何使用requests模块在一个post中提交含有多个相同名称的数据?3. navicat - Mysql无法连接4. python打包代码上传PYPI出现错误500,虚心求教5. 级联对象 - mysql 级联查询问题6. javascript - js 对中文进行MD5加密和python结果不一样。7. PHP中的$this代表当前的类还是方法?8. mysql - SELECT 多個資料表及多個欄位9. thinkphp中Controller里面使用Request::File(’image’);10. python - 用ffmpeg采集视频,用terminate没法结束进程
排行榜

网公网安备