|
|
|
order by newId
|
|||
|---|---|---|---|
|
#18+
В одной из веток встретил следующее выражение. Поясните, что это значит ? В 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. Заранее благодарен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2002, 09:56:12 |
|
||
|
order by newId
|
|||
|---|---|---|---|
|
#18+
>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 Это уже только проблемы перевода с английского. Могу порекомендовать т.н. "правило ряда": Если идет подряд несколько существительных, то последнее переводится как существительное, а остальные как прилагательные к нему. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2002, 10:41:11 |
|
||
|
order by newId
|
|||
|---|---|---|---|
|
#18+
>> Дословно: Неотрицательное целочисленное представление имени (поля) в выборке. Это я понял. Смущает следующее - select newId() возвращает далеко не неотрицатильное целочисленное выражение, а uniqueidentifier. И мне непонятно, как соотнести то, что вы мне описали с данным фактом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2002, 11:10:59 |
|
||
|
order by newId
|
|||
|---|---|---|---|
|
#18+
Когда в ORDER BY указана целочисленная константа, она означает порядковый номер колонки, указанной в SELECT. То есть ORDER BY 2 означает сортировать выборку по значению второй колонки. Например, Код: plaintext 1. 2. позволит сортировать по значению 4-й колонки в выборке, даже если ей не присвоено какое-то имя: SELECT a, b, c, (a+b+c) AS d.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2002, 14:00:28 |
|
||
|
order by newId
|
|||
|---|---|---|---|
|
#18+
Блин. Неужели я настолько плохо выражаю свои мысли :) То что вы мне написали я знаю. Теперь если я делаю запрос: select newid() я получаю случайное выражение вида: DF90B464-C3B2-4D52-B8C6-344448046EE9 Кажется это называется GUID (хотя, честно говоря не уверен). Теперь если я говорю: select * from Table order by newid() по какому столбцу я сортирую ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2002, 16:24:27 |
|
||
|
order by newId
|
|||
|---|---|---|---|
|
#18+
По виртуальному столбцу, который создаст сам сервер ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2002, 16:37:42 |
|
||
|
order by newId
|
|||
|---|---|---|---|
|
#18+
по "виртуальному".... фактически newid() вызывается для каждой строки набора а потом по этому же полю сортируется.... вот два запрса делающие оно и то же... select * from table order by newid() select newid() ,* from table order by 1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2002, 16:43:04 |
|
||
|
order by newId
|
|||
|---|---|---|---|
|
#18+
>> фактически newid() вызывается для каждой строки набора а потом по этому же полю сортируется.... Спасибо. Понял. Получается, что можно делать даже такие вещи: select a,b from table order by f(a,b) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2002, 16:56:01 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=32064618&tid=1819096]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
31ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
42ms |
get tp. blocked users: |
1ms |
| others: | 229ms |
| total: | 340ms |

| 0 / 0 |
