«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как получить 5 лучших элементов из каждой категории в MySQL, избегая при этом ошибки «Подзапрос возвращает более 1 строки»?

Как получить 5 лучших элементов из каждой категории в MySQL, избегая при этом ошибки «Подзапрос возвращает более 1 строки»?

Опубликовано 20 ноября 2024 г.
Просматривать:880

How to Retrieve the Top 5 Items from Each Category in MySQL While Avoiding the

Получение 5 лучших элементов из каждой категории в MySQL

Обнаружение ошибки «Подзапрос возвращает более 1 строки» при попытке получить пять лучших пунктов меню для каждой категории меню? Решение заключается в использовании переменных с побочным эффектом.

Давайте разберем пересмотренный подход:

В подзапросе мы вводим переменные с побочным эффектом @r и @g, используя нотацию @ SQL. Эти переменные используются для отслеживания членства в группах и увеличения ранга внутри каждой группы.

  1. @g:=null — инициализирует @g значением NULL, указывая, что мы начинаем новую группу.
  2. @r:=0 — инициализирует @r значением 0, что означает начало нового ранга.
  3. Предложение WHERE в подзапросе (где m.menuid = s.menuid) гарантирует, что s и m выровнены на основе идентификатора меню.
  4. @r:=case, когда @g=m.profilename then @r 1 else 1 end — выражение в этом случае увеличивает @r на 1, если m.profilename совпадает с текущей группой (@g). В противном случае он сбрасывает @r в 1, сигнализируя о начале новой группы.
  5. @g:=m.profilename — обновляет @g именем профиля текущей группы, что позволяет нам отслеживать последующие строки, принадлежащие этой группе. group.
  6. Основной запрос извлекает имя и имя профиля из псевдонима таблицы подзапроса X.
  7. Последнее условие WHERE r

Реализуя этот подход, вы можете эффективно получать желаемые результаты без ошибки «Подзапрос возвращает более 1 строки».

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3