Выбор трех верхних строк из нескольких категорий в MySQL
Выбор верхних строк из каждой категории в таблице может оказаться сложной задачей. Один метод, использующий представления и подзапросы, как описано в первой попытке, может возвращать неправильные результаты.
Более эффективный подход использует аналитические функции, которые MySQL изначально не поддерживает. Однако эти функции можно эмулировать с помощью переменных. Вот как это сделать:
SELECT x.*
FROM (
SELECT t.*,
CASE
WHEN @category != t.category THEN @rownum := 1
ELSE @rownum := @rownum 1
END AS rank,
@category := t.category AS var_category
FROM TBL_ARTIKUJT t
JOIN (SELECT @rownum := NULL, @category := '') r
ORDER BY t.category
) x
WHERE x.rank Этот запрос инициализирует переменные @rownum и @category с помощью операции JOIN. Затем он присваивает ранг каждой строке на основе ее категории, увеличивая ранг при изменении категории.
Наконец, запрос выбирает только строки с рангом 3 или меньше. Обратите внимание, что вам может потребоваться изменить предложение SELECT x.*, чтобы включить только нужные столбцы.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3