Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / select distinct, порядок записей / 5 сообщений из 5, страница 1 из 1
31.10.2014, 05:39:59
    #38792459
xPro
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
select distinct, порядок записей
Есть такая простая таблица:

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

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

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


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


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

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

Предположим, что таблица никогда не меняется. Если запрашивать оттуда данные обычным select * то они всегда выдаются в одном порядке.
Так вот можно ли сделать уникальную выборку без нарушения этого порядка?
...
Рейтинг: 0 / 0
31.10.2014, 06:38:18
    #38792477
select distinct, порядок записей
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
31.10.2014, 06:53:39
    #38792483
Maxim Boguk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
select distinct, порядок записей
xProДобрый Э - Эх,

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

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

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


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