Возможно ли использовать GROUP BY
более одного столбца в запросе MySQL SELECT
? Например:Возможно ли использовать GROUP BY несколькими столбцами с использованием MySQL?
GROUP BY fV.tier_id AND 'f.form_template_id'
Возможно ли использовать GROUP BY
более одного столбца в запросе MySQL SELECT
? Например:Возможно ли использовать GROUP BY несколькими столбцами с использованием MySQL?
GROUP BY fV.tier_id AND 'f.form_template_id'
GROUP BY col1, col2, col3
group by fV.tier_id, f.form_template_id
GROUP BY CONCAT(col1, '_', col2)
Интересно, как ответ с одной строкой кода, опубликованной через 4 года после ответа на вопрос, получает 8 (восемь!) Upvotes. Кроме того, они являются неправильными и неэффективными, кроме позднего и короткого. –
Даже слепая белка получает орех то и дело ... – thebarless
@ ypercubeᵀᴹ почему вы говорите, что это неправильно? Это именно то, что я искал, и правильную интерпретацию «группы по нескольким столбцам». На самом деле, я не знаю, почему это не поведение «group by col1, col2», как я ожидал. – Abram
Да, вы можете сгруппировать по нескольким столбцам. Но вы не можете получить правильный ответ.
select * from table group by col1, col2
Где
col1 получил первое предпочтение сгруппированных и col2 получил второе предпочтение. Потому что mysql дает предпочтение слева направо.
Предпочтение слева направо применяется к возрастающему порядку группировок, а не к предпочтению группы столбцов. 'GROUP BY' применяет' col1 + col2'. например 'col1 = 1, 2, 1, 2 | col2 = 1, 2, 3, 2' и работает 'GROUP BY col1, col2' вернет' 1,1 | 1,3 | 2,2' в отличие от '1,1 | 2,2', как было предложено. Принимая во внимание, что «GROUP BY col2, col1» изменит восходящий порядок возврата col2. '1,1 | 2,2 | 1,3' Demo: http://sqlfiddle.com/#!9/d5f69/1 Обратите внимание, что идентификатор строки: 2 возвращается в обоих случаях для' 2,2', несмотря на инвертирование колонны. – fyrye
Да, Mysql дал нам неверный результат –
Да, но что означает группировка более двух столбцов? Ну, это то же самое, что группировка по каждой уникальной паре в строке. При заказе списка столбцов изменяется порядок сортировки строк.
В вашем примере, можно было бы написать
GROUP BY fV.tier_id, f.form_template_id
Между тем, код
GROUP BY f.form_template_id, fV.tier_id
даст аналогичные результаты, но отсортированы по-разному.
Чтобы использовать простой пример, у меня был счетчик, который должен был суммировать уникальные IP-адреса на каждую посещенную страницу на сайте. Что в основном группируется по pagename, а затем по IP. Я решил это с помощью комбинации DISTINCT и GROUP BY.
SELECT pagename, COUNT(DISTINCT ipaddress) AS visit_count FROM log_visitors GROUP BY pagename ORDER BY visit_count DESC;
Если вы предпочитаете (мне нужно применить эту группу) двумя колоннами в то же время, я только что видел этот момент:
SELECT CONCAT (col1, '_', col2) AS Group1 ... GROUP BY Group1
Вы не можете сгруппировать по строкам. Вы можете группировать по столбцам, хотя –
Для SEO: мой первый поиск был для «multiple» GROUP BY' MySQL ». –
Это не для SEO, это для пользователей. – Buffalo