我使用 MySql ,我有一个类似的表:
| id |类别|场1 |第2场|
类别字段中的值不是唯一的。
我想为每个类别值获取5个随机行
我无法在一个查询中找到解决方案。
你能帮我解决这个问题吗?
谢谢
编辑: 我发现了这个:
SELECT t.*
FROM (
SELECT @lim := 5,
@cg := -1
) vars,
table_example t
WHERE CASE WHEN @cg <> category THEN @r := @lim ELSE 1 END > 0
AND (@r := @r - 1) >= 0
AND (@cg := category) IS NOT NULL
ORDER BY
category , id
但在这种情况下,它为每个类别值提取5行(但它按id排序)。我试图调整它来随机订购,但我找不到令人满意的......
答案 0 :(得分:0)
我不确定这是否有效,只是预感:
SET @rownum=1;
SELECT t.id,CASE WHEN @rownum > 5 THEN @rownum:=0 ELSE @rownum=@rownum+1
FROM table_example t WHERE @rownum<=5 GROUP BY t.category,t.id ORDER BY RAND()