T-SQL Как выбрать строки без повторяющихся значений в одном столбце? - PullRequest
4 голосов
/ 10 сентября 2010

У меня есть таблица с 2 столбцами ID, ID_PROJ_CSR

Содержимое этой таблицы:

ID     ID_PROJ_CSR
------------------
747    222   <
785    102
786    222   <
787    223
788    224

Я хочу выбрать идентификатор, но если любое значение из ID_PROJ_CSR являетсядубликат, мне нужно выбрать любой идентификатор строки, содержащей это дублированное значение (в этом примере выберите идентификатор 747 ИЛИ 786

Я пытаюсь:

SELECT * FROM my_table tab 
WHERE tab.id_proj_csr = (SELECT TOP 1 id_proj_csr
                         FROM my_table mt
                         WHERE mt.id_proj_csr = tab.id_proj_csr)

Ответы [ 2 ]

16 голосов
/ 10 сентября 2010

Вам необходимо GROUP BY:

SELECT MAX(ID) as [ID], ID_PROJ_CSR
FROM my_table
GROUP BY ID_PROJ_CSR
1 голос
/ 10 мая 2012

Вот случай пропуска всего, что имеет повторяющееся значение, поэтому вы получите только строки, которые не имеют дубликатов:

SELECT *
FROM my_table
GROUP BY ID_PROJ_CSR
HAVING count(ID_PROJ_CSR) = 1;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...