[mysql] 그룹화 할 때 테이블에서 가장 긴 ‘문자열’을 선택하는 방법

예:

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

WHERE [something]

GROUP BY partnumber, manufacturer, condition

비어있는 설명이 몇 개 있고 부품 번호, 제조업체, 상태 값이 많을 수 있으며 그룹에서 사용 가능한 첫 번째 설명을 사용하는 것 같습니다. 사용 가능한 가장 긴 설명을 받고 싶습니다.

나는 이것을 시도했다 :

MAX(LENGTH(description))

그러나 그것은 문자열의 문자 수를 반환합니다. 내가 MySQL에서하려는 일을 할 수 있습니까?



답변

가장 큰 것을 얻기 위해 노력 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`


답변

내 질문에 답한 것 같습니다 .MAX (설명)가 잘 작동하는 것 같습니다.


답변

MAX (LENGTH (description))는 Description 열에서 가장 긴 값의 길이를 반환합니다.


답변