powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как ограничить SELECT выборкой от N до М записей по порядку? (+)
9 сообщений из 9, страница 1 из 1
Как ограничить SELECT выборкой от N до М записей по порядку? (+)
    #32021659
Buster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вопрос не спроста, т.к. во всей документации нет ничего толкового

Необходимо разбить результат запроса на стринцы. Естественно, что
тянуть весь результат запроса - 100.000 записей, ради 10 записей не рационально!
Отсюда вопрос можно ли ограничить выборку не по полям таблицы, а по ПОРЯДКУ СЛЕДОВАНИЯ записи в результате.
В MySQL есть для этого конструкция для SELECT - LIMIT N,M тоесть выбирать начиная с N, М записей результата запроса.
Здесь же ничего кроме TOP и SET ROWCOUNT нет. Посоветуйте плиз, что нить.
...
Рейтинг: 0 / 0
Как ограничить SELECT выборкой от N до М записей по порядку? (+)
    #32021681
Sergey Vinogradov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Select * from
( Select top ( M - N ) * from
( Select top M ... from ... order by ... ) as View1
order by ... desc ) as View2
order by ...
...
Рейтинг: 0 / 0
Как ограничить SELECT выборкой от N до М записей по порядку? (+)
    #32021737
Фотография Александр Степанов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здесь такое уже обсуждалось где-то... Советовали
declare @Start int
select top N @Start = id from table1 order by id
select top K * from table1 where id >=@Start order by id
...
Рейтинг: 0 / 0
Как ограничить SELECT выборкой от N до М записей по порядку? (+)
    #32021740
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Как ограничить SELECT выборкой от N до М записей по порядку? (+)
    #32021771
Olga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
paging на SQL делается так :

declare
@Page int =1,(номер страници)
@RecsPerPage int = 10 (сколько записей на странице ,
@FirstRec int,
@LastRec int

SELECT @FirstRec = (@Page - 1) * @RecsPerPage
SELECT @LastRec = (@Page * @RecsPerPage + 1)

--создаем temp table c ID int IDENTITY
CREATE TABLE [dbo].#Temp_search1
( ID int IDENTITY ,
[rank] [int],
ID] [int] IDENTITY (1, 1) NOT NULL ,
[varchar] (300) и так далее < на sql 2000 можно использовать type table
для переменной)


insert into #Temp_search1 select все что вам нужно

SELECT *,
MoreRecords =
(
SELECT COUNT(*)
FROM #Temp_search1 TI
WHERE TI.ID >= @LastRec
)
FROM #Temp_search1
WHERE ID > @FirstRec AND ID < @LastRec


все
передаете @Page и @RecsPerPage как параметры из вашего приложения
...
Рейтинг: 0 / 0
Как ограничить SELECT выборкой от N до М записей по порядку? (+)
    #32021783
Timur Sokolov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 Olga

Решения с таким количеством ошибок я уже давно не встречал


К тому же, что будет если оператор <insert into #Temp_search1 select все что вам нужно> вернет очень много записей, а страниц Вы просмотрите после этого всего несколько? Зачем в этом случае все эти данные писать во временную таблицу?
...
Рейтинг: 0 / 0
Как ограничить SELECT выборкой от N до М записей по порядку? (+)
    #32021821
olga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
o kakix konkretno oshibkax vi izvolite govorit" ?

y menia eto rabotaet na 100 % , eto reshenie vi moshete podrobno prochitat"
zdec"
http://www.4guysfromrolla.com/webtech/062899-1.shtml

kstati moshete ckopirovat" polnost'y store procedure ecli y vac ne polychaetcia napicat" ee camomy

vcego xoroshego
...
Рейтинг: 0 / 0
Как ограничить SELECT выборкой от N до М записей по порядку? (+)
    #32021860
Timur+Sokolov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Olga, Вас никто не хотел обидеть, но я привык полагать, что код, в начале которого стоит столь утверждающий коментарий "paging на SQL делается так :" должен работать сразу же, после операций <Copy> и <Paste>.
Пойдем по порядку.

> declare
> @Page int =1,(номер страници)

Вы уверены, что такой синтаксис коректен для SQL Server? Деректива Declare не допускает инициализацию переменных. Это не значение параметра по умолчанию для процедуры.

DECLARE
{{ @local_variable data_type }
| { @cursor_variable_name CURSOR }
| { table_type_definition }
} [ ,...n]

> --создаем temp table c ID int IDENTITY
> CREATE TABLE [dbo].#Temp_search1

> ( ID int IDENTITY ,
^^^^^^^^^^^^^^^^^^^^^

> [rank] [int],

> ID] [int] IDENTITY (1, 1) NOT NULL ,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

> [varchar] (300) и так далее < на sql 2000 можно использовать type table
> для переменной)

Какая-то из выделенных строк явно лишняя, так как невозможно создать таблицу с двумя полями identity. Если смотреть дальше на код, то лишняя вторая строка, так как на первую присутствует ссылка.

IDENTITY

Indicates that the new column is an identity column. When a new row is added to the table, Microsoft® SQL Server™ provides a unique, incremental value for the column. Identity columns are commonly used in conjunction with PRIMARY KEY constraints to serve as the unique row identifier for the table. The IDENTITY property can be assigned to tinyint, smallint, int, bigint, decimal(p,0), or numeric(p,0) columns. Only one identity column can be created per table. Bound defaults and DEFAULT constraints cannot be used with an identity column. You must specify both the seed and increment or neither. If neither is specified, the default is (1,1).

Про комментарии, скобки и запятые я просто промолчу.

> y menia eto rabotaet na 100 % , eto reshenie vi moshete podrobno prochitat" zdec"

Почитал. Ну так и Вы перечитайте, заодно сравните Ваш код с кодом по ссылке. Если вы хотели продемонстрировать идею, было бы проще сразу указать эту ссылку.

> kstati moshete ckopirovat" polnost'y store procedure ecli y vac ne polychaetcia napicat" ee camomy

Спасибо.

Ну, и мне не очень нравится идея с вставкой всего результата поиска во временную таблицу, так как в общем случае это может быть довольно большой объем и несколько пользователей смогут запросто положить сервер. Но, так как это напрямую зависит от задачи и ее реализации, то мое мнение тут не более чем imho.

PS: ничего личного. Без обид?
...
Рейтинг: 0 / 0
Как ограничить SELECT выборкой от N до М записей по порядку? (+)
    #32021891
HotDog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В конструкции
select top N @Start = id from table1 order by id
вместо N не могу использовать переменную (MSSQL2000)
Но судя по вышеприведенным листингам это должно работать
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как ограничить SELECT выборкой от N до М записей по порядку? (+)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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