2015-09-10 2 views
0

У меня есть таблица #tempTest с данными, как это:Найти записи с Минимальными данными длиной

ID Name 
1 A 
2 AB 
3 ABC 
4 ABCD 
5 ABCDE 
6 ABCDEF 
7 X 
8 QRWXYZ 

Теперь мне нужно кратчайшее имя из таблицы.

Я пробовал так:

SELECT TOP 1(name) Smallest FROM #tempTest 
GROUP BY name 
ORDER BY LEN(name) 

И что представляет:

Smallest 
A 

Но что мне нужно:

ID Name 
1 A 
7 X 

ответ

3
SELECT TOP 1 WITH TIES (name) Smallest FROM #tempTest 
GROUP BY name 
ORDER BY LEN(name) 
+1

, возможно, стоит добавить некоторую информацию о синтаксисе 'WITH TIES', поскольку это не так часто. MSDN: https://msdn.microsoft.com/en-us/library/ms189463.aspx. * WITH TIES Используется, когда вы хотите вернуть две или несколько строк, которые привязываются к последнему месту в ограниченном наборе результатов. Должен использоваться с предложением ORDER BY. * – Tanner

1
SELECT id, name FROM #tempTest 
WHERE LEN(name) = (SELECT MIN(LEN(name)) FROM #tempTest) 
Смежные вопросы