@mars130

Как сделать запрос в запросе в SQL?

подскажите пожалуйста как сделать запрос в запросе?

Делаю запрос на получение списка ТОП 30 людей чьи шансы на победу больше других и сортирую их от большего к меньшиму.

SELECT * FROM `tg_users` ORDER BY `tg_users`.`chance_balance` DESC LIMIT 30


Дальше хочу из этого запроса выбрать 1 случайного человека

и пытаюсь сделать ещё один запрос в запросе:

SELECT * FROM `tg_users` ORDER BY `tg_users`.`chance_balance` DESC LIMIT 30 IN (SELECT * FROM `tg_users`  ORDER BY RAND() LIMIT 1)


Но как-то не выходит, толе я не понял синтаксис толе что-то делаю не так..
Знающие в SQL подскажите пожалуйста как правильно составить запрос, что бы в конечном итоге вышло так, что система в начале нашла ТОП 30 человек и из этих 30 человек случайным образом выбрала одного ????
  • Вопрос задан
  • 117 просмотров
Решения вопроса 1
@d-stream
Готовые решения - не подаю, но...
Тупой вариант: select * from (... тут первый запрос...) order by rand() limit 1
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
mayton2019
@mayton2019
Bigdata Engineer
Order by стоит не там. Вообще если хочешь в одном SQL запросе использовать несколько изолированных - то
попробуй Inline Views (или еще их называют common table expressions). Типа такого

WITH T AS (SELECT * FROM EMPLOYEE WHERE dept = 'Sales')
SELECT * FROM T WHERE name = 'Ava';
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы