Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 distinct и сортировка данных  [new]
Gregory
Member

Откуда:
Сообщений: 58
distinct изменяет сортировку данных, как вернуть первоночальную сортировку.
15 апр 03, 17:26    [175295]     Ответить | Цитировать Сообщить модератору
 Re: distinct и сортировка данных  [new]
snake
Member

Откуда: Russia, Penza
Сообщений: 2290
первоночальную сортировку. думаю, что нет такого понятия .
order by - поможет
15 апр 03, 17:30    [175300]     Ответить | Цитировать Сообщить модератору
 Re: distinct и сортировка данных  [new]
Gregory
Member

Откуда:
Сообщений: 58
c distictom order by неработает, если я заблуждаюсь покажите как писать такой запрос
15 апр 03, 17:39    [175320]     Ответить | Цитировать Сообщить модератору
 Re: distinct и сортировка данных  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31442
Пример:
select distinct id
from syscolumns
order by id
15 апр 03, 17:41    [175325]     Ответить | Цитировать Сообщить модератору
 Re: distinct и сортировка данных  [new]
B0rG
Member

Откуда: столичный город кудаблин
Сообщений: 619
ну только если очень хочеться :)

SELECT TMP.*
FROM ( SELECT DISTINCT Field FROM tblSomething ) TMP
ORDER BY TMP.Field

:-)

но можно и так
SELECT DISTINCT field1, field2 FROM tblSomething
ORDER BY field2

MS SQL 2000 SP3
только учти, что оно тебе выдаст неповторяющиеся пары.
15 апр 03, 17:43    [175333]     Ответить | Цитировать Сообщить модератору
 Re: distinct и сортировка данных  [new]
Gregory
Member

Откуда:
Сообщений: 58
ну ладно уговорили :)
значит я не правильно (немножко) сформировал вопрос.
короче если сделать select * from table1
и select distinct * from table1
данные выдаются с разными сортировками...
как сделать чтоб применяя distinct сортировка была как при простом select
15 апр 03, 17:56    [175357]     Ответить | Цитировать Сообщить модератору
 Re: distinct и сортировка данных  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31442
Если сделать select * from table1 и select * from table1, а потом опять select * from table1, то данные тоже могут выдаться с разными сортировками...
Короче, сортировка будет одинаковая, если сделать order by
15 апр 03, 18:02    [175372]     Ответить | Цитировать Сообщить модератору
 Re: distinct и сортировка данных  [new]
B0rG
Member

Откуда: столичный город кудаблин
Сообщений: 619
трать тарарать бип бип.
кто же делает SELECT DISTINCT * FROM ... ?
ты скажи точно что тебе надо?

и помни о том, что сервер выдает записи как ему на данный момент удобно, если ты не указываешь ORDER BY.
15 апр 03, 18:04    [175379]     Ответить | Цитировать Сообщить модератору
 Re: distinct и сортировка данных  [new]
Gregory
Member

Откуда:
Сообщений: 58
Я понимаю что конструкция с * неправильна... :))

просто при селекте мне данные выдаются так как мне нужно...
а когда делаю дистинкт сортииииируются по первому полю...
вся проблема в том что никакой order мне не поможет потому как нет такого поля отсортировав которое я получу такой же результат как при простом селекте...
путанно...
вот...
15 апр 03, 18:13    [175396]     Ответить | Цитировать Сообщить модератору
 Re: distinct и сортировка данных  [new]
Glory
Member

Откуда:
Сообщений: 104760
Я понимаю что конструкция с * неправильна... :))

просто при селекте мне данные выдаются так как мне нужно...
а когда делаю дистинкт сортииииируются по первому полю...


Сортировка осуществляется заданием фразы ORDER BY. И только так.
Во всех других случаях вы предоставляете право сотритовать результаты серверу. И он может воспользоваться этим правом так, как ему будет удобно на данный момент.
15 апр 03, 18:17    [175400]     Ответить | Цитировать Сообщить модератору
 Re: distinct и сортировка данных  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31442
2Gregory
Так сделайте такое поле.
Если вы хотите, чтобы данные выводились в порядке вставки, сделайте поле date_create, на него дафаулт getdate() и сортируйте при выборке по нему.
15 апр 03, 18:55    [175464]     Ответить | Цитировать Сообщить модератору
 Re: distinct и сортировка данных  [new]
KonstN
Member

Откуда:
Сообщений: 1201
2 alexeyvg
лучше identity - при быстрой вставке нескольких записей getdate() вернёт одинаковое значение

use pubs
create table seq ( a int identity(1, 1), b int, c datetime default getdate() )
insert seq(b) select 1 from authors
select * from seq
drop table seq
16 апр 03, 11:34    [175984]     Ответить | Цитировать Сообщить модератору
 Re: distinct и сортировка данных  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31442
2KonstN
Это да.
16 апр 03, 11:36    [175992]     Ответить | Цитировать Сообщить модератору
 Re: distinct и сортировка данных  [new]
Коляныч
Member

Откуда:
Сообщений: 279
а какой должна быть сортировка, если данные идут как-то так:

1 AAA
2 DDD
3 AAA
4 CCC
5 BBB
6 CCC
7 BBB
8 DDD
9 CCC
16 апр 03, 14:18    [176332]     Ответить | Цитировать Сообщить модератору
 Re: distinct и сортировка данных  [new]
B0rG
Member

Откуда: столичный город кудаблин
Сообщений: 619
а какой ти хочищь?
16 апр 03, 14:42    [176383]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: distinct и сортировка данных  [new]
ypmail
Member

Откуда:
Сообщений: 331
Коляныч
а какой должна быть сортировка, если данные идут как-то так:

1 AAA
2 DDD
3 AAA
4 CCC
5 BBB
6 CCC
7 BBB
8 DDD
9 CCC


Столкнулся с той же проблемой, что и автор темы. На этом примере если применить DISTINCT, то записи будут расположены так:

AAA
BBB
CCC
DDD

Нужно, чтобы они располагались после применения DISTINCT как и шли в таблице:

AAA
DDD
CCC
BBB

При чём, мы выводим данные только одного столбца, ORDER BY тут не поможет, как быть?
16 окт 16, 11:15    [19786597]     Ответить | Цитировать Сообщить модератору
 Re: distinct и сортировка данных  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 20604
ypmail
Нужно, чтобы они располагались после применения DISTINCT как и шли в таблице:

В таблице они идут "никак". Таблица - это тупо куча.
Но если есть некий критерий, чётко определяющий некий порядок, который ты называешь термином "как идут в таблице", то именно этот критерий и следует применить к набору после DISTINCT для его сортировки.
16 окт 16, 12:30    [19786696]     Ответить | Цитировать Сообщить модератору
 Re: distinct и сортировка данных  [new]
invm
Member

Откуда: Москва
Сообщений: 9406
ypmail
как быть?
declare @t table (id int, v varchar(10));

insert into @t
values
 (1, 'AAA'),
 (2, 'DDD'),
 (3, 'AAA'),
 (4, 'CCC'),
 (5, 'BBB'),
 (6, 'CCC'),
 (7, 'BBB'),
 (8, 'DDD'),
 (9, 'CCC');

with a as
(
 select
  id, v,
  row_number() over (partition by v order by id) as rn
 from
  @t
)
select v from a where rn = 1 order by id;
16 окт 16, 12:52    [19786725]     Ответить | Цитировать Сообщить модератору
 Re: distinct и сортировка данных  [new]
anvg
Member

Откуда: СПб
Сообщений: 101
Доброе время суток.
invm , а не проще ли будет, учитывая результат вашего варианта
select v from @t group by v order by min (id);
16 окт 16, 14:35    [19786874]     Ответить | Цитировать Сообщить модератору
 Re: distinct и сортировка данных  [new]
ypmail
Member

Откуда:
Сообщений: 331
anvg,

То, что нужно! Работает! Спасибо!
16 окт 16, 15:29    [19786939]     Ответить | Цитировать Сообщить модератору
 Re: distinct и сортировка данных  [new]
Никита_1980
Member

Откуда:
Сообщений: 7
По-хорошему нужно всегда делать ключ во ВСЕХ таблицах, тогда и проблем подобых не будет
17 окт 16, 15:55    [19791095]     Ответить | Цитировать Сообщить модератору
 Re: distinct и сортировка данных  [new]
invm
Member

Откуда: Москва
Сообщений: 9406
anvg
а не проще ли будет
Да, проще.
17 окт 16, 16:24    [19791285]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить