Использование ключевого слова LIMIT в подзапросе MySQL приводит к следующей ошибке:
Эта версия MySQL еще не поддерживает подзапрос LIMIT & IN / ALL / ANY / SOME.
Есть ли альтернатива этому запросу, которая обеспечит выбор трех верхних строк на основе количества участников в каждой категории MemberAction (Участие / Регистрация / Отмена) на основе критериев участия?
Есть 3 таблицы со следующими столбцами:
1) Промо р
PromoType: ENUM(Form, Meeting, Survey)
PromoID: INT
2) Члены m
PromoID: INT
ProspectID: INT
MemberAction: ENUM(Participate, Signup, Cancel)
3) Проспект пр
ProspectID INT
ProspectName VARCHAR
Теперь я хочу выбрать каждый из 3 типов промо и 3 лучших ProspectNames для каждого типа промо на основе наибольшего количества участников. Мой вывод должен показывать PromoType и ProspectName, ранжированные от большинства до наименьшего количества участников (топ-3) в каждой категории (опрос / форма / собрание).
SELECT p.PromoType, pr.ProspectName,
COUNT(m.ProspectID) AS ProspectIDCount
FROM Promo p
JOIN Members m
ON p.PromoID = m.PromoID
JOIN Prospects pr
ON m.ProspectID = pr.ProspectID
WHERE m.ProspectID IN
(SELECT DISTINCT ProspectID
FROM Members m
WHERE p.PromoType = 'Survey'
AND m.MemberAction ='Participate'
ORDER BY p.PromoType, ProspectIDCount DESC
LIMIT 3)
UNION ALL
(SELECT DISTINCT ProspectID
FROM Members m
WHERE p.PromoType = 'Form'
AND m.MemberAction ='Participate'
ORDER BY p.PromoType, ProspectIDCount DESC
LIMIT 3)
UNION ALL
(SELECT DISTINCT ProspectID
FROM Members m
WHERE p.PromoType= 'Meeting'
AND m.MemberAction ='Participate'
ORDER BY p.PromoType, ProspectIDCount DESC
LIMIT 3);
Ожидаемый результат:
Campaign Type ProspectName
Survey Top Participation
Survey 2nd Most Participations
Survey 3rd Most Participations
Form Top Participation
Form 2nd Most Participations
Form 3rd Most Participations
Meeting Top Participation
Meeting 2nd Most Participations
Meeting 3rd Most Participations
Actual Result: This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'