У меня есть таблица с чем-то вроде следующего:
ID Name Color
------------
1 Bob Blue
2 John Yellow
1 Bob Green
3 Sara Red
3 Sara Green
Что я хотел бы сделать, это вернуть отфильтрованный список результатов, в результате чего будут возвращены следующие данные:
ID Name Color
------------
1 Bob Blue
2 John Yellow
3 Sara Red
т.е. Я хотел бы вернуть 1 строку на пользователя. (Я не против, какая строка возвращается для конкретного пользователя - мне просто нужно, чтобы [ID] был уникальным.) У меня уже есть кое-что, что работает, но очень медленно, когда я создаю временную таблицу, добавляя все идентификаторы и затем используя «OUTER APPLY» выбирает верхнюю 1 из той же таблицы, то есть
CREATE TABLE #tb
(
[ID] [int]
)
INSERT INTO #tb
select distinct [ID] from MyTable
select
T1.[ID],
T2.[Name],
T2.Color
from
#tb T1
OUTER APPLY
(
SELECT TOP 1 * FROM MyTable T2 WHERE T2.[ID] = T1.[ID]
) AS V2
DROP TABLE #tb
Может кто-нибудь подсказать, как мне это улучшить?
Спасибо