Ссылаясь на SO и другие sites, я привел примеры использования MySQL для создания запроса «наибольшая n-на-группу».MySQL - подсчет строк при подготовке к работе с наибольшим количеством n-групп не работает?
Моим вариантом в этом случае будет запрос, который возвращает первые 3 строки каждой категории. В качестве основы для этого мне нужно сортировать свои данные в удобной последовательности, и именно там начинаются мои проблемы. Выполнение только запроса последовательности с нумерацией строк показывает, что изменения в категории в основном игнорируются. Я должен иметь 35 категорий, возвращающих строки, но только 5 делают это.
Мой запрос:
set @c:=0;
set @a:=0;
SELECT IF(@c = tdg, @a:[email protected]+1, @a:=1) AS rownum, (@c:=tdg) ,
julian_day, sequence, complete, year, tdg
FROM tsd WHERE complete = 0
order by tdg, year, julian_day, sequence
У меня есть синтаксической ошибки с этим запросом?
Как я должен угадать, а не знать, я использую поле комментариев: проблема может заключаться в том, что ваш IF() предполагает, что все строки, которые имеют общее значение в tdg, должны быть последовательно в таблице (то есть другие строки в -между). ЗАКАЗ не выполняется до выполнения SELECT, но после того, как все строки извлечены -> @a получает сброс. Кроме того, на странице справки вам нужен фиктивный столбец, поэтому внимательно прочитайте эти страницы. – Makis
@Makis - Я думаю, что вы на правильном пути - у меня не было времени тщательно проверить ваше предложение, но это имеет смысл - бросьте свой комментарий в качестве ответа, и я буду отмечать его как правильное. –