2016-05-05 5 views
0

В Postgres, учитывая, имеющий следующие данные:поддержанию порядка, делая отчетливое

-[ RECORD 1 ]- 
id  | 57425 
filter | 1 
-[ RECORD 2 ]- 
id  | 57416 
filter | 1 
-[ RECORD 3 ]- 
id  | 57426 
filter | 1 
-[ RECORD 4 ]- 
id  | 57416 
filter | 2 
-[ RECORD 5 ]- 
id  | 57424 
filter | 2 
-[ RECORD 6 ]- 
id  | 57425 
filter | 2 
-[ RECORD 7 ]- 
id  | 57427 
filter | 2 

Что SQL для создания следующих (удаление дублированный). Мне все равно, если это тот же самый порядок, я просто хочу, чтобы записи с значением фильтра «1» отображались перед записями с значением фильтра «2».

-[ RECORD 1 ]- 
id  | 57425 
filter | 1 
-[ RECORD 2 ]- 
id  | 57416 
filter | 1 
-[ RECORD 3 ]- 
id  | 57426 
filter | 1 
-[ RECORD 4 ]- 
id  | 57424 
filter | 2 
-[ RECORD 5 ]- 
id  | 57427 
filter | 2 
+0

, пожалуйста, напишите ваш запрос. –

+0

Итак, вы хотите значение 'MIN()' filter, когда 'GROUP' ing' id'? –

+0

Я хочу отфильтровать повторяющиеся значения, но сохраняя записи с фильтром, установленным на 1 выше записей, с фильтром, установленным на 2. –

ответ

2

Как я предложил в комментарии, это кажется простой проблемой группировки/заказа:

SELECT id,MIN(filter) as lowFilter 
FROM UnnamedTable 
GROUP BY id 
ORDER BY lowFilter 

Как только вы оказываетесь говорят " Я хочу сделать отличные от некоторые из столбцов ... »или« Я хочу сделать , но также включают дополнительные столбцы ", вы должны понимать, что то, что вы на самом деле ищете, не DISTINCT, а GROUP BY. Затем вам следует правильно сформулировать, какие агрегаты (ы) вы хотите применить к дополнительным столбцам, учитывая, что для выбора может быть несколько значений (из нескольких строк).

0
Select ID, min(filter) from my_table group by id order by 2 

Или

Select distinct t1.id, (select min(filter) from my_table t2 where t2.id = t1.ID) from my_table t1 order by 2 
Смежные вопросы