如何在同一表中的每个组中选择3个随机行-MYSQL

时间:2020-03-20 01:56:23

标签: mysql

我有一个具有多个类别(c)的表,并且我每次运行此查询时都希望为每个类别选择3个随机行。我选择了3个就很好了,但是注意到它不是在选择随机行,而是每次都选择相同的行。因此,我将回到查询的第一位。

select PLAYERID, 
NAME,
RACEID,
VALUE,
MA, 
ST, 
AG,
LEVEL,
SKILLS,
XP,
TYPE
FROM FAPLAYER
GROUP BY TYPE
ORDER BY RAND()

我正在尝试从FAPLAYER表中获取每个TYPE的3个,其中大概有50个不同的TYPE。

这是我的基本query with RAND的查询输出

1 个答案:

答案 0 :(得分:-1)

解决方案1 ​​:看起来“ 按类型分组”给您带来麻烦。试试这个:

SELECT * FROM FAPLAYER
ORDER BY RAND()
LIMIT 3;

解决方案2 : 您是否有ID为自动递增的列?如果是这样,则可以执行以下max = 50,min = 1:

SET @rand_id = (SELECT FLOOR((RAND() * (max-min+1))+min));

SELECT *
FROM FAPLAYER
WHERE RACEID = @rand_id