Если I GROUP BY
по уникальному ключу и применить предложение LIMIT
к запросу, будут ли все группы вычисляться до применения предела?Является ли команда GROUP BY по UNIQUE, вычисляет все группы перед применением предложения LIMIT?
Если у меня есть сто записей в таблице (у каждого есть уникальный ключ), будет ли у меня 100
записей во временной таблице, созданной (для GROUP BY
), до применения LIMIT
?
социологическое исследование, почему мне это нужно:
Возьмите Stack Overflow
, например.
Каждый запрос, который вы запускаете, чтобы отобразить список вопросов, также показывает пользователя, который задал этот вопрос, и количество имеющихся у него значков.
Итак, в то время как пользователь < -> вопрос один к одному, пользователь < -> Значки у одного есть много.
Единственный способ сделать это в одном запросе (а не по вопросам, а другой в отношении пользователей и затем объединить результаты) состоит в том, чтобы сгруппировать запрос с помощью первичного ключа (question_id) и join + group_concat в таблицу user_badges ,
То же самое касается вопросов ТЕГИ.
Code example:
Table Questions:
question_id (int)(pk)| question_body(varchar)
Table tag-question:
question-id (int) | tag_id (int)
SELECT:
SELECT quesuestions.question_id,
questions.question_body,
GROUP-CONCAT(tag_id,' ') AS 'tags-ids'
FROM
questions
JOIN
tag_question
ON
questions.question_id=tag-question.question-id
GROUP BY
questions.question-id
LIMIT 15
:-D прочитал мой последний комментарий Seb. (Что касается непомеченных вопросов, в моей конкретной системе у меня нет такого случая, всегда есть тег по умолчанию, но это не часть этого вопроса) Спасибо! –