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

Ссылка скопирована
1 ответ

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

Делаю запрос на получение списка ТОП 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';

Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Юрий Linux Ответ

Для выполнения запроса в запросе в SQL, вы можете использовать подзапросы. Подзапросы позволяют вам вложить один SQL запрос в другой, чтобы выполнить более сложные запросы или получить более точные результаты.

Пример использования подзапроса в SQL:

SELECT column1, column2
FROM table1
WHERE column1 IN (SELECT column3 FROM table2 WHERE condition);

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 код менее читаемым, поэтому старайтесь использовать их с умом и только тогда, когда это необходимо для выполнения конкретной задачи.

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно