sql 每个类别查询10条数据

a 表

a_id name 
1    类别1

2    类别2

3    类别3

4    类别4

5    类别5

b表

b_id name a_id
1    a    1

2    b    1

3    c    1

4    d    2

5    e    2

sql语句该怎样写 每个类别查询10条数据

查出类似下面的数组结构:

array(
    array(
        'a_id'=>1,
        'a_name'=>类别1,
        'b_list'=>array{
            array(
                'b_id'=>1,
                'b_name'=>a,
                'a_id'=>1,
            ),
            
            array(
                'b_id'=>1,
                'b_name'=>a,
                'a_id'=>1,
            ),
        }
    },
    array(
        'a_id'=>1,
        'a_name'=>类别1,
        'b_list'=>array{
            array(
                'b_id'=>1,
                'b_name'=>a,
                'a_id'=>1,
            ),
            
            array(
                'b_id'=>1,
                'b_name'=>a,
                'a_id'=>1,
            ),
        }
    },
);

我不确定这种结构mysql 能不能查。效率怎样,想折腾一下(A V A)

阅读 4.1k
2 个回答
新手上路,请多包涵

采用分组,取巧的一种方式
SELECT * FROM b WHERE b.id in (
SELECT GROUP_CONCAT(b.id) FROM a INNER JOIN b on a.id =b.aid GROUP BY a.id HAVING COUNT(*) < 11
)

思路是拿到分组的b表的10个id ,然后在范文查找,最后拿到每组10个

如果取最新的话,在里面排序使用

UNION查询了解一下?

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题