Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Выбор определенного диапозона значений 
V
    Опции темы
LOBsTerr
Дата 18.11.2006, 11:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 37
Регистрация: 22.2.2006
Где: Ташкент

Репутация: нет
Всего: нет



Я недавно работаю с MS SQL server и тут же наткнулся на одну проблемку, например я делаю выборку:
Код

select * from my_table

она мне возращает 100 значений, но мне надо выбрать только значения с 20 по 70.
Каким образом это можно сделать?
Аналоги таких функций в mysql - limit (нач. знач., кол-во). Или в oracle - rowcount.
В MS SQL  пока ничего такого не нашел, спросил у всех людей работавших с MS SQL, никто не смог мне помочь, пытался написать свою процедурку, но тоже наталкнудся на всякого рода ограничения. Если такой функции нет, я приведу свои решения, может кто поможет куда двигаться дальше. Заранее всем спасибо
PM MAIL WWW ICQ   Вверх
Rodman
Дата 18.11.2006, 12:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

Репутация: 1
Всего: 122



Код

SELECT * FROM `student` LIMIT 0, 10   


We have specified here to return 10 records starting from 0 or from the first record. Same way we can ask for 10 records starting from 20th record like this 

Код

SELECT * FROM `student` LIMIT 20, 10


This will return 10 records from 21st record. That is from 21st record to 30th  record. Here is the output
PM MAIL WWW Skype GTalk YIM MSN   Вверх
Golden Hands
Дата 18.11.2006, 13:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Золотой
****


Профиль
Группа: Участник Клуба
Сообщений: 2023
Регистрация: 23.1.2005
Где: Екатеринбург

Репутация: 1
Всего: 83



Код

SELECT TOP n * from Table

Выбирает n записей, начиная с первой. Указать, с какой записи начинать выборку (а-ля LIMIT) нельзя. Как варианты, можно сортировать датасет нужным образом или использовать BETWEEN в запросе.

P.S. Никакого SELECT...LIMIT в MS SQL Server нет.


--------------------
Мы обречены... но только на победу!
Настанет день, и мы построим новый дом.
Внесем в него тепло, что сохранить сумели,
И воскресим все то, что в нас когда-то умерло... © Тень Света
PM MAIL ICQ   Вверх
boevik
Дата 18.11.2006, 21:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1452
Регистрация: 31.5.2004
Где: Израиль

Репутация: 15
Всего: 35



Если требуется выбрать с n по m запись, то 
Код

select identity(int,1,1) id, * 
into #t 
from my_table

select *
from #t
where id between n and m



--------------------
Никогда не говори никогда
PM MAIL WWW   Вверх
LOBsTerr
Дата 19.11.2006, 16:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 37
Регистрация: 22.2.2006
Где: Ташкент

Репутация: нет
Всего: нет



2 boevik - Большое спасибо, а то уже всю голову поломал!
2 Rodman - Внимательно читай вопрос!
PM MAIL WWW ICQ   Вверх
LOBsTerr
Дата 21.5.2008, 09:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 37
Регистрация: 22.2.2006
Где: Ташкент

Репутация: нет
Всего: нет



Вообще есть более стандартное решение, думаю понадобиться тем, кто решает подобные задачи.
Код


WITH mytable AS
(
    SELECT Cost,
    ROW_NUMBER() OVER (ORDER BY Cost) AS 'RowNumber'
    FROM table 

SELECT * 
FROM mytable 
WHERE RowNumber BETWEEN 1 AND 20;


Есть вариант без использования With, но я пока не нашел

Это сообщение отредактировал(а) LOBsTerr - 21.5.2008, 09:42
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "MS SQL"
Akina

Akina

Запрещается!

Публиковать ссылки и обсуждать взлом чего бы то ни было.

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы составления неспецифических запросов рассматриваются здесь
  • Используйте теги [code=sql][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Zloxa, Akina.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MS SQL Server | Следующая тема »


 




[ Время генерации скрипта: 0.1109 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.