MySQL Случайный лимит Выберите с соединением таблицы - PullRequest
0 голосов
/ 07 марта 2020

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

То, что я пробовал:

SELECT qa.Answerid,qa.Questionid
FROM question_answer as qa
JOIN (SELECT q.Questionid FROM question q ORDER BY rand() LIMIT 10)
WHERE qa.Questionid = q.Questionid

select *
From question q,question_answer qa,answer a 
where qa.Questionid=q.Questionid and qa.Answerid=a.Answerid
ORDER BY rand() LIMIT 10

enter image description here

Мне нужен результат, подобный следующему:

AnswerId         QuestionId       ...        ...        ...

Максимум 10 случайных QuestionId и количество AnswerId будет варьироваться в зависимости от того, сколько ответов есть для 10 случайных вопросов.

Спасибо за любую помощь.

1 Ответ

2 голосов
/ 07 марта 2020

Используйте подзапрос на question, чтобы получить 10 вопросов, а затем join в ответах:

select *
From (select q.*
      from question q
      order by rand()
      limit 10
     ) q join
     question_answer qa
     on qa.Questionid = q.Questionid join
     answer a 
     on qa.Answerid = a.Answerid;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...