|
|
|
Группировка со строкой максимальной длинны, MAX(varchar) GROUP BY
|
|||
|---|---|---|---|
|
#18+
Добрый ___ MariaDB таблица tovar (миллион записей) brandmodeldescriptionsony234234телекsony234234телевизорsony234234телевизор FULL HDpanasonic123232телефонpanasonic123232радиотелефонpanasonic123232радиотелефон DECT c 2-мя трубками......... запрос Код: sql 1. 2. 3. 4. 5. 6. 7. ожидаемый результат brandmodeldescriptionsony234234телевизор FULL HDpanasonic123232радиотелефон DECT c 2-мя трубками реальный результат brandmodeldescriptionsony234234телекpanasonic123232телефон запрос Код: sql 1. 2. 3. 4. 5. 6. 7. дает тоже самое Вопрос: как получить ожидаемый результат наиболее нересурсоемким путем? Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2015, 19:07:33 |
|
||
|
Группировка со строкой максимальной длинны, MAX(varchar) GROUP BY
|
|||
|---|---|---|---|
|
#18+
diego8807, так как ты оперируешь не значением столбца, а функцией от этого значения (length), то все способы будут одинаково ресурсоемкими. а вообще, читай закрепленные в топах топики. Есть там про выборку первой/последней записи в группе. Это как раз то, что тебе нужно... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2015, 19:19:32 |
|
||
|
Группировка со строкой максимальной длинны, MAX(varchar) GROUP BY
|
|||
|---|---|---|---|
|
#18+
для пояснения - цель: нужно вытащить в результат группировки самую длинную строку description ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2015, 19:19:56 |
|
||
|
Группировка со строкой максимальной длинны, MAX(varchar) GROUP BY
|
|||
|---|---|---|---|
|
#18+
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) ); Но как уже заметили выше, для вашей задачи все они будут ресурсоемкими. Описание других вариантов тут ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2015, 19:34:52 |
|
||
|
Группировка со строкой максимальной длинны, MAX(varchar) GROUP BY
|
|||
|---|---|---|---|
|
#18+
diego8807, ну, цель ясна, можно было бы и не уточнять. как вариант - я бы остановился на однопроходной группировке посредством "бабушкиного способа" - max по результату конкатенации длины строки и её значения. скорее всего, оно и будет наименее ресурсоемким способом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2015, 19:46:25 |
|
||
|
Группировка со строкой максимальной длинны, MAX(varchar) GROUP BY
|
|||
|---|---|---|---|
|
#18+
Добрый Э - Эх, примерно как-то так: Код: sql 1. 2. 3. 4. [/SRC]on-line проверка на sqlfiddle.com ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2015, 20:02:14 |
|
||
|
Группировка со строкой максимальной длинны, MAX(varchar) GROUP BY
|
|||
|---|---|---|---|
|
#18+
чего-то тэги послетали... :( примерно как-то так: Код: sql 1. 2. 3. 4. on-line проверка на sqlfiddle.com ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2015, 20:03:36 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=38868545&tid=1833622]: |
0ms |
get settings: |
5ms |
get forum list: |
14ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
49ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
36ms |
get tp. blocked users: |
1ms |
| others: | 216ms |
| total: | 336ms |

| 0 / 0 |
