оператор TOP

potap75
Дата: 27.01.2009 17:18:14
Имею таблицу tab. Делаю к ней такой запрос:

select TOP 1 WITH TIES *
from tab
order by obj

Выдает первые записи, у которых значение obj одинаково и минимально среди всех.
Если я заменяю TOP 1 на TOP 2, на результате это никак не отражается. Разве так должно было быть? Мне казалось, что должны были добавиться строки, у которых значение obj, следующее за минимальным. Что это - глюк или мое неправильное понимание? Версия MS SQL - 2005.
Glory
Дата: 27.01.2009 17:19:14
potap75
И
Если я заменяю TOP 1 на TOP 2, на результате это никак не отражается. Разве так должно было быть? Мне казалось, что должны были добавиться строки, у которых значение obj, следующее за минимальным. Что это - глюк или мое неправильное понимание? Версия MS SQL - 2005.

Это ваше неправильное понимание
potap75
Дата: 27.01.2009 17:20:37
А можно поподробнее? К чему это должно привести - замена параметра TOP с 1 на 2 ?
Паганель
Дата: 27.01.2009 17:22:16
potap75
А можно поподробнее? К чему это должно привести - замена параметра TOP с 1 на 2 ?
А можно поподробнее пример тестовых данных и желаемого результата?
Ато фраза "должны были добавиться строки, у которых значение obj, следующее за минимальным" мне (лично) непонятна
Glory
Дата: 27.01.2009 17:22:47
potap75
А можно поподробнее? К чему это должно привести - замена параметра TOP с 1 на 2 ?

TOP

Specifies that only the first set of rows will be returned from the query result.

Выполните
select *
from tab
order by obj
и отсчитайте от начала 2 записи. Это и будет ваш результат с ТОР 2
iap
Дата: 27.01.2009 17:24:05
potap75,

TOP (@N) WITH TIES добавит к результирующим строкам те, которые не попали в число первых @N, но для которых значения полей, перечисленных в ORDER BY, имеют те же значения, что и у @N-ой строки.
Дедушка
Дата: 27.01.2009 17:31:23
with ties указывает серверу показать группу записей с одинаковым значением поля указанного в order by,
минимальное или максимальное будет это значение зависит от направления сортировки.
при этом номер в top указывает сколько записей показать из этой группы.
если вы хотите увидеть записи и из следующей группы (по значению поля в order by) то в top нужно указывать n+1, где n - количество записей в первой группе

--------------------------------------------------------------
Дьявол кроется в деталях.
potap75
Дата: 27.01.2009 17:31:32
Glory
potap75
А можно поподробнее? К чему это должно привести - замена параметра TOP с 1 на 2 ?

TOP

Specifies that only the first set of rows will be returned from the query result.

Выполните
select *
from tab
order by obj
и отсчитайте от начала 2 записи. Это и будет ваш результат с ТОР 2


это если бы я не написал with ties
Glory
Дата: 27.01.2009 17:33:31
potap75
Glory
potap75
А можно поподробнее? К чему это должно привести - замена параметра TOP с 1 на 2 ?

TOP

Specifies that only the first set of rows will be returned from the query result.

Выполните
select *
from tab
order by obj
и отсчитайте от начала 2 записи. Это и будет ваш результат с ТОР 2


это если бы я не написал with ties

А вы забавный. Вы синтаксис всегда наощупь изучаете ?
Не доверяете всяким там хелпам и приведенным там примерам ?
Паганель
Дата: 27.01.2009 17:35:38
Дедушка
если вы хотите увидеть записи и из следующей группы (по значению поля в order by)
то в top нужно указывать n+1, где n - количество записей в первой группе
Осталось только угадать это самое "количество записей в первой группе"