Mysql 分组时如何从表中选择最长的“字符串”

Mysql 分组时如何从表中选择最长的“字符串”,mysql,Mysql,例如: SELECT partnumber, manufacturer, condition, SUM(qty), AVG(price), description FROM parts WHERE [something] GROUP BY partnumber, manufacturer, condition 我有一些描述是空白的,可能有许多零件号、制造商、条件值,在组上,它似乎采用了第一个可用的描述,可以是空白的。我想得到最长的描述 我试过这个: MAX(LENGTH(descripti

例如:

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

WHERE [something]

GROUP BY partnumber, manufacturer, condition
我有一些描述是空白的,可能有许多零件号、制造商、条件值,在组上,它似乎采用了第一个可用的描述,可以是空白的。我想得到最长的描述

我试过这个:

MAX(LENGTH(description)) 

但是,它返回字符串中的字符数。有可能在MySQL中实现我想做的吗?

尝试按长度描述描述排序,并使用限制1来获得最大值。

似乎我回答了我自己的问题,MAXdescription似乎工作得很好

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`

这将从最长到最短对结果进行排序,并给出第一个结果最长。

MAXLENGTHdescription在“描述”列中返回最长值的长度。

这不会给出最长的描述,而会给出词法最大值的描述,即按字母顺序排列。然而,由于该排序会将任何非空描述放在空描述之后,因此如果存在非空描述,则始终会产生非空描述:也许这足以满足您的需要?在我看来,对于选择一条记录而言,在运行时间和编写代码方面,这似乎是“昂贵的”。我不认为子查询是处理该问题的最佳方式。@rosa:关于详细性,你是对的,尽管我不确定性能时间是否会与此和按需排序文件排序有很大不同。这个版本的优点是它返回所有最大长度的记录,而不仅仅是一个不确定的记录。@rosa:另外,回顾这个问题,我认为我的理解是OP希望获得每组中最长的字符串,而不是整体上最长的结果。
ORDER BY LENGTH(description) DESC LIMIT 1