В чем преимущество предлагаемого макета? Почему бы не просто упорядочить счет и покончить с этим? Я был бы смущен макетом, подобным тому, который вы описали.

м PHP-приложении у меня есть таблица статей mysql со следующими столбцами:

article_id    articletext    category_id    score

Каждая статья имеет оценку, которая рассчитывается на основе ее популярности и относится к определенной категории (доступно около 10 категорий)

Мой вопрос: как я могу выполнить запрос, который возвращает статьи с наибольшим количеством баллов, чередуя их по категориям, чтобы, если это возможно, статьи той же категории не возвращались последовательно. Например, если статья с наивысшей оценкой имеет оценку 100, возвращаемый набор будет выглядеть примерно так:

article_id    articletext    category_id    score
-----------------------------------------------------
142           <.....>        5              100
153           <.....>        3              97
119           <.....>        5              99
169           <.....>        2              93
121           <.....>        7              89
197           <.....>        2              92
.
.
.

Первое (наивное) решение, которое приходит в голову, - это выполнить 10 операций выбора (по 1 для каждой категории), упорядочить их по убыванию оценки, а затем на уровне PHP чередовать каждый возвращенный набор данных, выбирая по одному результату за раз и комбинируя их вместе. в новом массиве.

Есть ли более эффективный способ добиться этого? Если возможно на уровне MySQL

Ответы на вопрос(2)

Ваш ответ на вопрос