2011-06-17 29 views
0

我如何把這個我如何爲一個字符串的MAX分組,同時保持字符串而不是字符數?

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

到這一點?

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

問題似乎是在字符串上使用MAX,同時保持字符串和ID分組。

FWIW,表格實際上有7K行和大約40列;我不認爲這應該重要,但我提到它以防萬一。

在我現有的最大的努力,我得到的整數鞏固,但不是字符串...

回答

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。在這種情況下,兩者都會被退回。

+0

非常好 - 謝謝!:) – kelm

+0

@kelm - 它已經這樣做了,因爲它正在尋找具有最長長度的相同ID中的名字。所以「鮑比」比「鮑勃」長,它會選擇「鮑比」爲相同的ID。沒有任何邏輯知道Rob,Bob和Bobby都是同名變體。 – Thomas

+0

工作正常;再次感謝! – kelm

相關問題