2015-05-14 4 views
2

У меня есть данные в этой таблице:Группировка по дублей на один столбец, но иллюстрирующий еще один столбец

id | name 
-------------------- 
265 | crazy row 
265 | "crazy row" LTD 
273 | simple 
273 | simple & co 
273 | "microsoft" corporation 
273 | microsoft 
284 | oracle 
284 | some another 

Я хочу, чтобы удалить строки с теми же ID с, но по-прежнему вызова на экран Name столбец ,

Так что результат должен выглядеть следующим образом:

id | name 
-------------------- 
265 | crazy row 
273 | simple 
284 | oracle 

Это не имеет значения, какое имя значение будет отображаться: первая [сумасшедшая строка] или последний [ «сумасшедший строки» LTD].

Я написал кое-что, но, конечно, это неправильно

SELECT 
    l.[id], [name] 
FROM 
    [list] l 
JOIN 
    (SELECT [id] 
    FROM [list] 
    GROUP BY [id] 
    HAVING COUNT(*) > 1) x ON l.id = x.id 

Отредактировано: есть нормальные строки (не дублирует) в моей таблице. Моя цель состоит в том, чтобы найти дубликаты и показать одно имя, это потому, что в моем SQL код, который я нахожу дубликаты первых

+1

Вы должны поместить его в агрегированной стоимости, так что вы могли бы попробовать MAX ([имя]) или любую другую функцию, которая возвращает одно из многих значений? – Patrick

ответ

3

Здесь и являются

select ID, max(name) from [list] l 
group by id 
+0

обычно требуется больше двух глаз – Tirma

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