只获取每个类别的随机项

时间:2017-08-03 01:31:15

标签: php mysql pdo

我有两个表,类别和项目,我想得到10个随机类别的随机记录。

tb_category

category_id PK
category_name

tb_items

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

我不知道这是否是更好的方法。

感谢。

1 个答案:

答案 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;