#mysql
Вопрос:
У меня есть таблица, в которой прямо сейчас я получаю результат, добавляя дополнительный индекс, но я хочу получить результат, используя оператор больше, чем для дополнительного идентификатора индекса
Этот запрос дает мне следующее
SET @a:=0;
SELECT @a:=@a 1 additional_id, output.*
FROM (SELECT sum(item_sale item_viewed) as totalSum ,item_id FROM items WHERE item_active='1' GROUP BY item_id order by totalSum desc ) output
дополнительный идентификатор | item_id | Итого |
---|---|---|
1 | 3 | 17 |
2 | 1 | 5 |
3 | 2 | 2 |
Но я хочу использовать больше, чем оператор, и хочу получить такой результат, если additional_id > 1, то найдите только 2 результата
дополнительный идентификатор | item_id | Итого |
---|---|---|
2 | 1 | 5 |
3 | 2 | 2 |
Как я мог этого достичь ?
Комментарии:
1. Вы ищете второго и третьего бестселлера?
2. На какой версии mysql вы работаете?
3. Используйте свой запрос в качестве подзапроса, применяйте его в соответствии с ТЕМ, где во внешнем запросе.
4. Да, я использую функцию загрузки больше, и найти бестселлера теперь немного сложно для меня, потому что, если выборка только по основному идентификатору очень проста, но поиск бестселлеров затруднен. Итак, я добавил дополнительный индекс , но я не понимаю, как получить результат с помощью additional_id
5. @P. Salmon , версия MySQL 5.7.28, а PHP 7.40
Ответ №1:
SELECT *
FROM (
-- your query
SELECT @a:=@a 1 additional_id, output.*
FROM (SELECT sum(item_sale item_viewed) as totalSum ,item_id FROM items WHERE item_active='1' GROUP BY item_id order by totalSum desc ) output
-- end of your query
CROSS JOIN (SELECT @a:=0) init_variable
) AS subquery
WHERE additional_id > 1