powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Группировка со строкой максимальной длинны, MAX(varchar) GROUP BY
8 сообщений из 8, страница 1 из 1
Группировка со строкой максимальной длинны, MAX(varchar) GROUP BY
    #38868517
diego8807
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый ___
MariaDB
таблица tovar (миллион записей)
brandmodeldescriptionsony234234телекsony234234телевизорsony234234телевизор FULL HDpanasonic123232телефонpanasonic123232радиотелефонpanasonic123232радиотелефон DECT c 2-мя трубками.........

запрос
Код: sql
1.
2.
3.
4.
5.
6.
7.
SELECT 
brand
,model
,MAX(description)
FROM tovar
#тут есть еще INNER JOIN, для примера упростил
GROUP BY brand, model


ожидаемый результат
brandmodeldescriptionsony234234телевизор FULL HDpanasonic123232радиотелефон DECT c 2-мя трубками

реальный результат
brandmodeldescriptionsony234234телекpanasonic123232телефон


запрос
Код: sql
1.
2.
3.
4.
5.
6.
7.
SELECT 
brand
,model
,MAX(description)
FROM tovar
GROUP BY brand, model
ORDER BY length(description) DESC

дает тоже самое

Вопрос: как получить ожидаемый результат наиболее нересурсоемким путем?
Спасибо.
...
Рейтинг: 0 / 0
Группировка со строкой максимальной длинны, MAX(varchar) GROUP BY
    #38868522
diego8807,

так как ты оперируешь не значением столбца, а функцией от этого значения (length), то все способы будут одинаково ресурсоемкими.
а вообще, читай закрепленные в топах топики. Есть там про выборку первой/последней записи в группе. Это как раз то, что тебе нужно...
...
Рейтинг: 0 / 0
Группировка со строкой максимальной длинны, MAX(varchar) GROUP BY
    #38868523
diego8807
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
для пояснения - цель:
нужно вытащить в результат группировки самую длинную строку description
...
Рейтинг: 0 / 0
Группировка со строкой максимальной длинны, MAX(varchar) GROUP BY
    #38868532
retvizan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
diego8807,

существует несколько способов решения данной задачи, например,

SELECT * FROM tovar t where not exists
(SELECT * FROM tovar where brand = t.brand and model = t.model and length(description) > t.length(description) );

Но как уже заметили выше, для вашей задачи все они будут ресурсоемкими. Описание других вариантов тут
...
Рейтинг: 0 / 0
Группировка со строкой максимальной длинны, MAX(varchar) GROUP BY
    #38868538
diego8807,

ну, цель ясна, можно было бы и не уточнять.
как вариант - я бы остановился на однопроходной группировке посредством "бабушкиного способа" - max по результату конкатенации длины строки и её значения. скорее всего, оно и будет наименее ресурсоемким способом.
...
Рейтинг: 0 / 0
Группировка со строкой максимальной длинны, MAX(varchar) GROUP BY
    #38868544
Добрый Э - Эх,

примерно как-то так:
Код: sql
1.
2.
3.
4.
[SRC sql]select brand, model,
       substr(max(concat(lpad(length(description),3,'0'),'~',description)),5) as x_len
  from tovar
 group by brand, model

[/SRC]on-line проверка на sqlfiddle.com
...
Рейтинг: 0 / 0
Группировка со строкой максимальной длинны, MAX(varchar) GROUP BY
    #38868545
чего-то тэги послетали... :(

примерно как-то так:
Код: sql
1.
2.
3.
4.
select brand, model,
       substr(max(concat(lpad(length(description),3,'0'),'~',description)),5) as x_len
  from tovar
 group by brand, model

on-line проверка на sqlfiddle.com
...
Рейтинг: 0 / 0
Группировка со строкой максимальной длинны, MAX(varchar) GROUP BY
    #38868599
diego8807
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый Э - Эх, огромное спасибо, это то, что искал!
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Группировка со строкой максимальной длинны, MAX(varchar) GROUP BY
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]