powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Set ROWCOUNT глючит
5 сообщений из 5, страница 1 из 1
Set ROWCOUNT глючит
    #32015815
George
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я сегодня обнаружил странное на мой взгляд поведение опции Set ROWCOUNT, может, еще кого заинтересует.
скрипт
Set ROWCOUNT 10

select ...
from ...

union all

select ...
from ...
order by 2 desc,3 desc

реально выполнялся так:
сначала выбираем строки первого селекта, затем второго селекта БЕЗ УЧЕТА СОРТИРОВКИ,
затем из множества берем первые 10 строк и их сортируем!!
Мне же нужно было сначала сортировать, а потом отсекать первые 10.

Интересно, сталкивался ли кто-нибудь с подобной проблемой без UNION ?
Довольно сложно смоделировать эту ситуацию (Я создал почти такой же запрос на таблице с кластерным индексом но "неправильному" полю, чтоб сбить сортировку, но он все равно отработал правильно.)
...
Рейтинг: 0 / 0
Set ROWCOUNT глючит
    #32015817
Фотография SergSuper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я не понял о чем Вы. Я не знаю как оно "реально выполняется", но если почитать хелп, то там написано:
UNION

Specifies that multiple result sets are to be combined and returned as a single result set .

Т.е. order by 2 desc,3 desc относиться ко всему набору данных. В этом лекго убедиться, если попробывать выполнить такой запрос:
select name from sysobjects where type='U' order by name
union
select name from sysobjects where type='P' order by name

order by может быть только один.


Set ROWCOUNT здесь совсем не при чем.
...
Рейтинг: 0 / 0
Set ROWCOUNT глючит
    #32015825
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ROWCOUNT с order by действительно не работает. Альтернатива - TOP nnn, т.е. только в exec(...) - минус секюрити на процедурах и время компиляции...
...
Рейтинг: 0 / 0
Set ROWCOUNT глючит
    #32015829
George
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Минус не только с секьюрити. Минусов вообще много.
Тогда вопрос: для чего вообще ROWCOUNT ?
Ограничить набор обрабатываемых столбцов первыми n имеет смысл только при указании порядка. По-моему так.
Если же ROWCOUNT для этого не предназначет, то зачем он вообще?
...
Рейтинг: 0 / 0
Set ROWCOUNT глючит
    #32015853
Фотография SergSuper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Почему же не работает?

Вот такой запрос
set rowcount 10
select name from sysobjects where type='S' and name like 'sys[p-x]%'
union
select name from sysobjects where type='S' and name like 'sys[d-h]%'
order by name

у меня выдаёт такое:

name
-------------
sysdepends
sysfilegroups
sysfiles
sysfiles1
sysforeignkeys
sysfulltextcatalogs
sysfulltextnotify
syspermissions
sysproperties
sysprotects

а что по Вашему он должен был выдать?
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Set ROWCOUNT глючит
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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