Используя ПРЕДЕЛ в GROUP BY для получения N заканчивается на группу?

Пожалуйста, проверьте кодировку из вашего .html файла. Вы можете найти это через Notepad ++ в разделе «Кодирование»

.
359
задан Salman A 15 May 2015 в 01:27
поделиться

2 ответа

то, Как получить N, заканчивается на ГРУППУ , можно использовать ОБЪЕДИНЕНИЕ вместо ГРУППЫ и установить ПРЕДЕЛ в каждом операторе SELECT.
пример для массива значений для соответствия против:

(
  SELECT * FROM tablename
  WHERE  column = '".$myValueArray[$n]."'
  ORDER BY column DESC
  LIMIT 4
)
UNION
(
  SELECT * FROM tablename
  WHERE  column = '".$myValueArray[$n+1]."'
  ORDER BY column DESC
  LIMIT 4
)
UNION
(
  SELECT * FROM tablename
  WHERE  column = '".$myValueArray[$n+2]."'
  ORDER BY column DESC
  LIMIT 4
);

Это немного интенсивно / дорогой для большего набора. Но поскольку меньшие наборы могут быть хорошим решением.

0
ответ дан 23 November 2019 в 00:19
поделиться

Нет, вы не можете ограничивать произвольные подзапросы (вы можете сделать это в ограниченной степени в более новых mysqls, но не для 5 результатов на группу).

Это запрос максимального типа GroupWise, который не является тривиальным для выполнения в SQL. Существуют различные способы для решения, которые могут быть более эффективными для некоторых случаев, но для Top-n в целом вы захотите посмотреть Ответ Билла на аналогичный предыдущий вопрос.

Как и в случае с большинством решений этой проблемы, он может вернуть более пяти строк, если есть несколько строк с тем же значением значение , поэтому вам все равно понадобится количество постобработки, чтобы проверить, Отказ

9
ответ дан 23 November 2019 в 00:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: