Как выбрать самую длинную строку из таблицы при объединении


пример:

SELECT partnumber, manufacturer, condition, SUM(qty), AVG(price), description FROM parts

WHERE [something]

GROUP BY partnumber, manufacturer, condition

у меня есть несколько пустых описаний, и может быть много значений partnumber, manufacturer, condition, а в группе, похоже, есть первое доступное описание, которое может быть пустым. Id хотел бы получить самое длинное описание доступно.

Я попытался это:

MAX(LENGTH(description)) 

однако это возвращает количество символов в строке. Можно ли сделать то, что я пытаюсь сделать в MySQL?

4 66

4 ответа:

попробовать ORDER BY LENGTH(description) DESC и использовать LIMIT 1 чтобы получить только самый большой.

ORDER BY LENGTH(description) DESC LIMIT 1

это сортирует результаты от самого длинного до самого короткого и дает первый результат (самый длинный.)

SELECT   partnumber, manufacturer, `condition`, SUM(qty), AVG(price), description
FROM     parts
WHERE    [something] AND LENGTH(description) = (
           SELECT MAX(LENGTH(description))
           FROM   parts AS p
           WHERE  p.partnumber   = parts.partnumber
              AND p.manufacturer = parts.manufacturer
              AND p.condition    = parts.condition
         )
GROUP BY partnumber, manufacturer, `condition`

кажется, я ответил на свой собственный вопрос, Макс (описание), кажется, работает просто отлично.