2012-06-26 2 views
2

У меня есть таблица (назовите ее table myTable).Получить не дубликаты столбца x, но дубликаты столбца y

Он имеет данные, как это:

номер/название

1 jake 
2 chris 
3 sally 
4 billy 
1 tom 
5 cathy 

(я понимаю, что это плохая установка, но я не получил роскошь делать настройки)



Мне нужно запросить эту таблицу, так что результаты возвращаются с:

1 jake 
2 chris 
3 sally 
4 billy 
5 cathy 

ИЛИ

2 chris 
3 sally 
4 billy 
1 tom 
5 cathy 


Это не имеет значения, какое имя получает возвращается для дублированного числа ... только то, что кто-то получает вернулся.

Вот мой не-работает попытка:

with 
a as (
     SELECT number 
     FROM myTable 
), 

b as (
     SELECT number, name 
     FROM myTable 
) 


SELECT a."number", b."name" 

FROM a 
left join b on a."number" = b."number" 

ответ

2

Использование GROUP BY чтобы гарантировать, что каждый number возвращается только один раз, и использовать агрегатную функцию, чтобы выбрать одно из значений для name:

SELECT number, MAX(name) AS name 
FROM yourtable 
GROUP BY number 
+0

rofl rofl. MAX, не думал использовать это на строке! благодаря!! Я буду отмечать это как ответ через 9 минут, когда это разрешено. благодаря!! – adam

0

Попробуйте это. Поскольку вам не важно, какие из нескольких имен, принадлежащих числу, возвращаются, вы можете использовать функцию max или min.

select number, max(name) 
from myTable 
group by number 
Смежные вопросы