2015-02-09 3 views
-3

Imagine у ​​вас есть строка результатов от SELECT заявления:SQL Игнорировать повторяющиеся первичные ключи

ID (pk) Name  Address 
1  a  b 
1  c  d 
1  e  f 
2  a  b 
3  a  d 
2  a  d 

Можно ли изменить оператор SQL, чтобы получить одну запись только для записи с идентификатором 1?

У меня есть оператор SELECT, который отображает несколько значений, которые могут иметь один и тот же первичный ключ. Я хочу взять только одну из этих записей, если, скажем, у меня 5 записей с одним и тем же первичным ключом.

SQL: http://pastebin.com/cFCBA2Uy

Скриншот: http://i.imgur.com/UlMBZhC.png

То, что я хочу, чтобы показать только один файл, который, например, дл Номер файла: 925, 890

+0

Какая строка/версия должна отображаться по запросу? И почему у вас есть ПК, который позволяет дублировать для начала? – SchmitzIT

+13

Почему у вас есть дубликаты первичных ключей в первую очередь? Это побеждает их цель ... – Siyual

+0

Показать сценарий создания таблицы. – Cortwave

ответ

2

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

Следующий запрос делает то, что вы просили:

DECLARE @T table 
(
    id int, 
    name varchar(50), 
    address varchar(50) 
) 
INSERT INTO @T VALUES 
(1, 'a', 'b'), 
(1, 'c', 'd'), 
(1, 'e', 'f'), 
(2, 'a', 'b'), 
(3, 'a', 'd'), 
(2, 'a', 'd'); 

WITH A AS 
(
    SELECT 
     t.id, t.name, t.address, 
     ROW_NUMBER() OVER (PARTITION BY id ORDER BY (SELECT NULL)) AS RowNumber 
    FROM 
     @T t 
) 
SELECT 
    A.id, A.name, A.address 
FROM 
    A 
WHERE 
    A.RowNumber = 1 

Но я думаю, что должно быть критерием. Если вы его найдете, выражайте свои критерии как ORDER BY внутри предложения OVER.

EDIT:

Вот вам результат:

+----+------+---------+ 
| id | name | address | 
+----+------+---------+ 
| 1 | a | b  | 
| 2 | a | b  | 
| 3 | a | d  | 
+----+------+---------+ 

Отказ от ответственности: запрос я написал недетерминированно различные условия (индексы, статистика и т.д.) может привести к различным результатам.

Смежные вопросы