我如何分组字符串的MAX,同时保持字符串而不是字符数?

时间:2011-06-17 23:49:04

标签: mysql string group-by max

我该怎么转

 +--------+---------------+           
 | ID     |  name         |           
 |--------|---------------|           
 +   1    | tim           |           
 +-------------------------           
 |   1    | timothy       |           
 +--------++--------------+           
 |   1    | timmy         |           
 +--------|---------------|           
 |   2    | jane          +           
 +--------+---------------+           
进入这个?

 +--------+---------------+           
 | ID     |  name         |           
 |--------|---------------|           
 +   1    | timothy       |           
 +-------------------------           
 |   2    | jane          |           
 +--------++--------------+           

问题似乎是在字符串上使用MAX,同时保留字符串并按ID分组。

FWIW,该表实际上有7K行和大约40列;我认为这不重要,但我提到它以防万一。

在我现有的MAX努力中,我得到整数来巩固,但不是字符串......

1 个答案:

答案 0 :(得分:2)

Select Id, Name
From MyTable
    Join    (
            Select Id, Max( Char_Length( name ) ) As NameLen
            From MyTable
            Group By Id
            ) As Z
        On Z.Id = MyTable.Id
            And Z.NameLen = Char_Length( MyTable.Name )

当然,这不会处理RobBob这样的情况。在这种情况下,两者都将被退回。