Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / order by newId / 9 сообщений из 9, страница 1 из 1
04.11.2002, 09:56:12
    #32064431
Осирис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
order by newId
В одной из веток встретил следующее выражение.

Поясните, что это значит ?

В BOL сказано следующее:

order_by_expression

Specifies a column on which to sort. A sort column can be specified as a name or column alias (which can be qualified by the table or view name), an expression, or a nonnegative integer representing the position of the name, alias, or expression in select list.

Как я понял неотрицательное значение может указывать на имя в списке select. Но по newid мы получаем во первых не целое выражение, а во вторых значений newid гораздо больше, чем полей в списке select.

Заранее благодарен.
...
Рейтинг: 0 / 0
04.11.2002, 10:41:11
    #32064449
Александр Спелицин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
order by newId
>or a nonnegative integer representing the position of the name in select list
Дословно: Неотрицательное целочисленное представление имени (поля) в выборке.
Т.е.
Select id, name, description
from TableName
Order By 2

Это тоже самое что и

Select id, name, description
from TableName
Order By name

Это уже только проблемы перевода с английского. Могу порекомендовать т.н. "правило ряда": Если идет подряд несколько существительных, то последнее переводится как существительное, а остальные как прилагательные к нему.
...
Рейтинг: 0 / 0
04.11.2002, 11:10:59
    #32064453
Осирис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
order by newId
>> Дословно: Неотрицательное целочисленное представление имени (поля) в выборке.

Это я понял.

Смущает следующее - select newId() возвращает далеко не неотрицатильное целочисленное выражение, а uniqueidentifier.

И мне непонятно, как соотнести то, что вы мне описали с данным фактом.
...
Рейтинг: 0 / 0
04.11.2002, 14:00:28
    #32064561
Гнездин Петр
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
order by newId
Когда в ORDER BY указана целочисленная константа, она означает порядковый номер колонки, указанной в SELECT.
То есть ORDER BY 2 означает сортировать выборку по значению второй колонки.
Например,
Код: plaintext
1.
2.
SELECT a, b, c, (a+b+c)
FROM mytable
ORDER BY  4 

позволит сортировать по значению 4-й колонки в выборке, даже если ей не присвоено какое-то имя:
SELECT a, b, c, (a+b+c) AS d....
...
Рейтинг: 0 / 0
04.11.2002, 16:24:27
    #32064618
Осирис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
order by newId
Блин.

Неужели я настолько плохо выражаю свои мысли :)

То что вы мне написали я знаю.

Теперь если я делаю запрос:

select newid() я получаю случайное выражение вида:

DF90B464-C3B2-4D52-B8C6-344448046EE9

Кажется это называется GUID (хотя, честно говоря не уверен).

Теперь если я говорю:

select * from Table order by newid()

по какому столбцу я сортирую ?
...
Рейтинг: 0 / 0
04.11.2002, 16:37:42
    #32064622
Glory
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
order by newId
По виртуальному столбцу, который создаст сам сервер
...
Рейтинг: 0 / 0
04.11.2002, 16:43:04
    #32064623
MiCe
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
order by newId
по "виртуальному"....
фактически newid() вызывается для каждой строки набора
а потом по этому же полю сортируется....
вот два запрса делающие оно и то же...
select * from table order by newid()
select newid() ,* from table order by 1
...
Рейтинг: 0 / 0
04.11.2002, 16:56:01
    #32064628
Осирис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
order by newId
>> фактически newid() вызывается для каждой строки набора
а потом по этому же полю сортируется....

Спасибо. Понял.

Получается, что можно делать даже такие вещи:

select a,b from table order by f(a,b)
...
Рейтинг: 0 / 0
04.11.2002, 17:03:39
    #32064632
MiCe
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
order by newId
ага.... соображаеш... ;)))
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / order by newId / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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