Как сделать запрос в запросе в SQL?
подскажите пожалуйста как сделать запрос в запросе?
Делаю запрос на получение списка ТОП 30 людей чьи шансы на победу больше других и сортирую их от большего к меньшиму.
SELECT * FROM `tg_users` ORDER BY `tg_users`.`chance_balance` DESC LIMIT 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) |
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 человек случайным образом выбрала одного ????
Дополнительно:
Тупой вариант: select * from (... тут первый запрос...) order by rand() limit 1
- При таком запросе пишет ошибку - Every derived table must have its own alias
- Всё, допетрил, спасибо, нужен был псевдоним sub
select * from (SELECT * FROM `tg_users` ORDER BY `tg_users`.`chance_balance` DESC LIMIT 30) <b>sub</b> order by rand() limit 1
select * from (SELECT * FROM `tg_users` ORDER BY `tg_users`.`chance_balance` DESC LIMIT 30) <b>sub</b> order by rand() limit 1
Ответы:
Order by стоит не там. Вообще если хочешь в одном SQL запросе использовать несколько изолированных - то
попробуй Inline Views (или еще их называют common table expressions). Типа такого
WITH T AS (SELECT * FROM EMPLOYEE WHERE dept = 'Sales') SELECT * FROM T WHERE name = 'Ava'; |
WITH T AS (SELECT * FROM EMPLOYEE WHERE dept = 'Sales') SELECT * FROM T WHERE name = 'Ava';
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Для выполнения запроса в запросе в SQL, вы можете использовать подзапросы. Подзапросы позволяют вам вложить один SQL запрос в другой, чтобы выполнить более сложные запросы или получить более точные результаты.
Пример использования подзапроса в SQL:
SELECT column1, column2 FROM table1 WHERE column1 IN (SELECT column3 FROM table2 WHERE condition);
В этом примере, подзапрос (SELECT column3 FROM table2 WHERE condition) будет выполнен сначала, а затем результат будет использован в главном запросе. Таким образом, вы можете фильтровать результаты главного запроса на основе результатов подзапроса.
Вы также можете использовать подзапросы в разделах SELECT, INSERT, UPDATE и DELETE запросов, в зависимости от ваших потребностей.
Помните, что использование подзапросов может сделать ваш SQL код менее читаемым, поэтому старайтесь использовать их с умом и только тогда, когда это необходимо для выполнения конкретной задачи.