powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / select distinct, порядок записей
5 сообщений из 5, страница 1 из 1
select distinct, порядок записей
    #38792459
xPro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть такая простая таблица:

"Январь";33"Февраль";44"Март";55"Апрель";6"Май";2"Июнь";45"Июль";23"Август";65"Сентябрь";123"Октябрь";54"Ноябрь";66"Декабрь";45

При выполнении к ней запроса:

Код: plsql
1.
select distinct "месяц" from temp 


"Январь""Декабрь""Май""Август""Ноябрь""Апрель""Октябрь""Февраль""Июль""Июнь""Сентябрь""Март"


Как видно порядок элементов совсем другой. Можно ли как-то делать поиск уникальных записей не нарушая из порядок по исходной таблице?
...
Рейтинг: 0 / 0
select distinct, порядок записей
    #38792464
xPro,

порядка строк в исходной таблице - не существует, таблица в общем случае - "куча". порядок в итоговой выборке гарантируется только предложением ORDER BY. всё остальное - от лукавого
...
Рейтинг: 0 / 0
select distinct, порядок записей
    #38792467
xPro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый Э - Эх,

Предположим, что таблица никогда не меняется. Если запрашивать оттуда данные обычным select * то они всегда выдаются в одном порядке.
Так вот можно ли сделать уникальную выборку без нарушения этого порядка?
...
Рейтинг: 0 / 0
select distinct, порядок записей
    #38792477
xPro,

сделать можно, но всегда нужно помнить, что это "костыль" и сломаться может в любой момент:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
--
-- Имитация исходной таблицы с "упорядоченными" данными:
with 
  t(month) as 
    (
      select 1 union all
      select 1 union all
      select 5 union all
      select 5 union all
      select 5 union all
      select 2 union all
      select 3 union all
      select 6 union all
      select 6 union all
      select 4 union all
      select 4 union all
      select 4 union all
      select 4 union all
      select 7
    )
--
-- Основной запрос:
select month
  from (
         select t.*, row_number() over(order by null) as rn
           from t
        ) v
 group by month
 order by min(rn);

-- Результат работы запроса - 
-- уникальная выборка, "упорядоченная" в соответствии с порядком в исходной таблице:
MONTH
-----
    1
    5
    2
    3
    6
    4
    7
...
Рейтинг: 0 / 0
select distinct, порядок записей
    #38792483
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xProДобрый Э - Эх,

Предположим, что таблица никогда не меняется. Если запрашивать оттуда данные обычным select * то они всегда выдаются в одном порядке.
Так вот можно ли сделать уникальную выборку без нарушения этого порядка?

Даже в postgresql вот это "Если запрашивать оттуда данные обычным select * то они всегда выдаются в одном порядке." - не правда в практическом смысле. Почти всегда - да но не более того.
Забудьте про порядок строк в таблице если не указан order by.

--Maxim Boguk
www.postgresql-consulting.ru
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / select distinct, порядок записей
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]