Не так быстро - другой ответ выбирает stop_id произвольно
Вот почему ваш вопрос не имеет смысла.Мы можем получить stop_ids и иметь разные line_id и направление.Но мы понятия не имеем, почему у нас есть stop_id.
create temp table test( line_id integer, direction char(1), stop_id integer);
insert into test values
(1, 'N', 1),
(1, 'N', 2),
(1, 'S', 1),
(1, 'S', 2),
(2, 'N', 1),
(2, 'N', 2),
(2, 'S', 1),
(2, 'S', 2)
;
select distinct on (line_id, direction) * from test;
-- do this again but will reverse the order of stop_ids
-- could it possible change our Robust Query?!!!
drop table test;
create temp table test(line_id integer,direction char(1),stop_id integer);
insert into test values
(1, 'N', 2),
(1, 'N', 1),
(1, 'S', 2),
(1, 'S', 1),
(2, 'N', 2),
(2, 'N', 1),
(2, 'S', 2),
(2, 'S', 1)
;
select distinct on (line_id, direction) * from test;
Первый выбор:
line_id | direction | stop_id
---------+-----------+---------
1 | N | 1
1 | S | 1
2 | N | 1
2 | S | 1
Второй выбор:
line_id | direction | stop_id
---------+-----------+---------
1 | N | 2
1 | S | 2
2 | N | 2
2 | S | 2
Итак, мы ушлибез группировки stop_id, но у нас нет никаких гарантий, почему мы получили тот, который сделали.Все, что мы знаем, это то, что это правильный stop_id.Любые обновления, вставки и другие вещи, которые не гарантирует RDMS, могут меняться в зависимости от физического порядка строк.
Это то, что я имел в виду в верхнем комментарии.Нет никакой известной причины для перетаскивания одного stop_id поверх другого, но каким-то образом вам нужен этот stop_id (или любой другой) отчаянно.