Как выбрать 3 случайных строки на группу в одной таблице - MYSQL - PullRequest
0 голосов
/ 20 марта 2020

У меня есть таблица с несколькими категориями (c), и я хотел бы выбрать 3 случайных строки для каждой категории каждый раз, когда я запускаю этот запрос. Я получил это, чтобы выбрать 3 просто отлично, но заметил, что он выбирает не случайные строки, а вместо этого одни и те же строки каждый раз. Итак, я вернулся к исходной точке с моим запросом.

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

Я пытаюсь получить 3 каждого ТИПА из таблицы FAPLAYER, где у меня, вероятно, около 50 различных типов.

Вот мой вывод запроса для базового c запроса с RAND

1 Ответ

0 голосов
/ 20 марта 2020

Решение 1 : похоже, " GROUP BY TYPE " доставляет вам неприятности. Попробуйте это:

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

Решение 2 : У вас есть столбец с идентификатором, который автоматически увеличивается? Если это так, то вы можете сделать следующее max = 50, min = 1:

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

SELECT *
FROM FAPLAYER
WHERE RACEID = @rand_id 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...