Скажите, что у меня есть игра, в которой задан вопрос, люди публикуют ответы, которые забиты, и лучшие 10 ответов выигрывают. У меня есть база данных SQL, в которой хранится вся эта информация, поэтому у меня могут быть такие таблицы, как «Пользователи», «Вопросы и ответы». В таблице ответов есть foreign_keys user_id и question_id и атрибут total_score.Выберите элементы, которые являются верхними результатами N для связанной таблицы
Очевидно, что для конкретного вопроса я могу получить первые 10 ответов с заказом и пределом:
SELECT * FROM Responses WHERE question_id=? ORDER BY total_score DESC LIMIT 10;
Что я ищу является способом, которым я могу определить, для конкретного пользователя, список всех их ответов, которые являются победителями (в первой десятке по их конкретному Вопросу). Проще программно пропустить каждый ответ и посмотреть, включен ли он в первую десятку для своего Вопроса, но я хотел бы оптимизировать это, поэтому я не делаю N + 1 запросов, где N - количество ответов, отправленных Пользователем ,
StackOverflow 2.0? Извините, это не помогло ... –
lol! Самое смешное, что я не понял, что мой пример описывает StackOverflow, пока вы не указали это. Так работает мой мозг сегодня. – MikeJ