2010-07-27 1 views
1

Скажем, у меня есть результат запроса, который выглядит следующим образом:SQL - Как вы выбираете первую строку (или любую уникальную строку) из нескольких строк с тем же идентификатором?

ID NAME Phone 
---- ---- ----- 
1  Bob  111-111-1111 
1  Bob  222-222-2222 
1  Bob  333-333-3333 
2  Stan 555-555-5555 
3  Mike 888-888-8888 
3  Mike 777-777-7777 

Я хочу вернуть только один экземпляр строки для каждого значения ID. Для меня не имеет значения, какая из нескольких строк я получаю - первая в наборе - это нормально.

Так возможный результат будет:

ID NAME Phone 
---- ---- ----- 
1  Bob  111-111-1111 
2  Stan 555-555-5555 
3  Mike 888-888-8888 
+0

Какие СУБД вы используете? –

+0

@Tom - прямо сейчас Доступ 2010 (да, я смущен, чтобы признать это), но на самом деле мой вопрос должен быть как можно более общим. – Howiecamp

+2

Хех ... нет причин быть смущенным. Иногда доступ - это правильный инструмент для работы. :) –

ответ

7

Для SQL Server [править] и MS Access, вы можете сделать

SELECT [ID], [Name], MIN(Phone) as PhoneNumber 
FROM PhoneNumbers 
GROUP BY [ID], [Name] 

Это вернет

ID NAME Phone 
---- ---- ----- 
1  Bob  111-111-1111 
2  Stan 555-555-5555 
3  Mike 777-777-7777 

Возможно, вы захотите добавить какой-то уникальный ключ к таблице, просто мысль.

+0

Спасибо. Это не таблица, а результат предыдущего запроса. Я собираюсь быстро попробовать это ... – Howiecamp

+0

отлично работает, спасибо. – Howiecamp

+0

Альтернативы Min(): Max(), First() и Last(). Последние два будут возвращать разные данные на основе порядка сортировки. –

1

Возможно, мы также сможем помочь вам в направлении, если вы предоставите нам инструкцию T-SQL, которая дала вам первые результаты, которые вы получили, с некоторой информацией о том, как это можно переписать для получения желаемых результатов.

+0

Думаю, я думал, что это не имеет значения, так как я могу прийти к этому результату множеством по-разному. Мне действительно нужно только решить этот вопрос. – Howiecamp