我有两个表,类别和项目,我想得到10个随机类别的随机记录。
category_id PK
category_name
item_id PK
category_id FK
我的表tb_category有大约40行,而tb_items有大约5k行,我是搜索性能。
SELECT * FROM
( SELECT c.category_id as cid, c.category_name, i.item_id FROM
tb_category c INNER JOIN
tb_items i ON c.category_id = i.category_id ORDER BY RAND() ) AS ShuffeledItems
GROUP BY ShuffeledItems.cid limit 10
我不知道这是否是更好的方法。
感谢。
答案 0 :(得分:0)
我倾向于使用相关的子查询:
select c.*,
(select i.item_id
from items i
where i.category_id = c.category_id
order by rand()
limit 1
) as item_id
from tb_category c
order by c.id
limit 10;