powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Выбор определенного кол-ва записей Select запросом
10 сообщений из 10, страница 1 из 1
Выбор определенного кол-ва записей Select запросом
    #32016216
Victor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Люди добрые!, подскажите как в результате выполнения селекта получить набор записей, например с 50й по 60ю ??
Например по 60 так :
select TOP 60 mypole1 from mytable1
а с 50й как ???
или как тут можно выкрутиться ???
????
...
Рейтинг: 0 / 0
Выбор определенного кол-ва записей Select запросом
    #32016218
Avtii
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если есть поле(я) с уникальным идентификатором, например поле с именем REC_ID то просто:
select * from TABLE where REC_ID >= 50 and REC_ID <=60
Если же нет, то можно курсором.
...
Рейтинг: 0 / 0
Выбор определенного кол-ва записей Select запросом
    #32016221
Victor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну, допустим поле ID есть, но там помимо всего есть еще и запись ORDER BY по нескольким полям, поэтому так к сожалению не получиться
А курсором как?. (в результате мне надо рекордсет передать в VB)
...
Рейтинг: 0 / 0
Выбор определенного кол-ва записей Select запросом
    #32016223
Фотография SergSuper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
как-то так
select TOP 11 mypole1 from mytable1
where id >=(select max(id) from (select top 50 id from mytable1 order by id) as s)

изврат конечно
и с курсором будет изврат
...
Рейтинг: 0 / 0
Выбор определенного кол-ва записей Select запросом
    #32016224
Чудик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я бы предложил следующее. Коли там есть уникальное поле, пределы выборки QntStart и QntEnd то:

declare @TempTable table(ID dec(16), .....)

select top QntEnd *
into @TempTable
from tTable
order by <условия сортировки>

delete @TempTable
where ID in (select top QntStart *
from @TempTable
order by <условия сортировки&gt

select *
from @TempTable
order by <условия сортировки>

Возможно это будет даже быстрее курсоров, если сортировка несложная. А при большом количестве записей, уж точно быстрее.
...
Рейтинг: 0 / 0
Выбор определенного кол-ва записей Select запросом
    #32016225
olga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
menia toshe etot voproc interesyet ...

pocovetyite chto-nibyd" pls !!!
...
Рейтинг: 0 / 0
Выбор определенного кол-ва записей Select запросом
    #32016226
Victor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А может можно сделать все за 2 шага
1 добавить свое поле с новым ID в порядке сортировки
2 выбрать все , где ID>начала и <конца
только как сделать п1 ???
...
Рейтинг: 0 / 0
Выбор определенного кол-ва записей Select запросом
    #32016228
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CREATE PROCEDURE paging (@rec_per_page int, @page int) AS

set nocount on
select identity(int, 1,1) as id_tmp, myid into #tmp_paging from mytable
select * from #tmp_paging as tmp
inner join mytable as t on tmp.id=t.myid
where tmp.id_tmp BETWEEN (@rec_per_page * @page) AND (@rec_per_page * (@page+1) - 1)
drop table #tmp_paging
GO

Примечания
- myid является первичным ключом для mytable
- если поле myid в таблице mytable также имеет свойство IDENTITY, то необходимо использовать запрос select identity(int, 1,1) as id_tmp, cast(myid as int) as myid into #tmp_paging from mytable для того, чтобы "обмануть" сервер.
- на время выполнения запроса select ... into #tmp_paging ... будет блокироваться база tempdb. Если время блокировки критично, то сначала придется создать таблицу #tmp_paging, а потом уже добавлять в нее записи. Это усложняет код (относительно), но в этом случае будет блокироваться только таблица #tmp_paging.
- можно сделать таблицу #tmp_paging и глобальной (##tmp_paging), возможно, что усложнение кода повысит производительность всего проекта (тут только придется решать вопрос актуальности данных, так что сложный вопрос)
...
Рейтинг: 0 / 0
Выбор определенного кол-ва записей Select запросом
    #32016250
olegusan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
очень простой но не очень эффективный для больших выборок метод:
Нужно иметь поле для сортировки. Пусть это будет ID
Нужно выбрать записи с 50 по 60.

select top 10 * from (
select top 60 * from mytable1 order by id ASC) drvd
order by id desc

Только записи пойдут в обратном порядке. Ну это уже не проблема, я думаю.
...
Рейтинг: 0 / 0
Выбор определенного кол-ва записей Select запросом
    #32016251
olegusan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В февральском номере SQL Magazine была хорошая статья на эту тему. Over the TOP.
http://www.sqlmag.com/Articles/Index.cfm?ArticleID=16191

Если кому интересно, бросьте мне E-mail (olegusan@yahoo.com) и я вам ее вышлю.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Выбор определенного кол-ва записей Select запросом
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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