Member 12919944 Ответов: 2

Как использовать limit в ms SQL ?


привет, ребята, я использовал limit для извлечения строк с диапазоном ? но мой кодовый запрос действительно имеет ошибку вот мой код:

Что я уже пробовал:

cmd.CommandText = "select * FROM tblstudinfo LIMIT 1,2"
rdr = cmd.ExecuteReader


он сказал: "неправильный синтаксис около 1"

2 Ответов

Рейтинг:
2

Richard Deeming

Если вы используете MS SQL Server 2012 или более позднюю версию, вы можете использовать OFFSET и FETCH:

SELECT *
FROM tblstudinfo
ORDER BY studentid
OFFSET 1 ROWS
FETCH NEXT 2 ROWS ONLY

Предложение ORDER BY (Transact-SQL)[^]


Рейтинг:
2

ZurdoDev

В MS Sql вы используете ключевое слово TOP.

SELECT TOP 1 * FROM tblStudInfo


Member 12919944

но он будет выбирать только из самых верхних ? я хочу выбрать один из разных диапазонов строк. например только строки с 5 по 10 или с 1 по 5

ZurdoDev

В этом случае, вы можете использовать функции row_number https://msdn.microsoft.com/en-us/library/ms186734.aspx.

Member 12919944

я попробовал это сделать, но он сказал недопустимое имя столбца ROW_NUMBER

Member 12919944

cmd. CommandText = " select * FROM tblstudinfo where ROW_NUMBER BETWEEN 1 and 2"

ZurdoDev

Вам нужно ознакомиться с документацией. Это не синтаксис для ROW_NUMBER.

Member 12919944

ВЫБИРАТЬ
Функции row_number() над(заказ по наименованию по возрастанию) как строку#,
имя, recovery_model_desc
Из представления sys.баз данных
Где database_id < 5;

где он взял databse_id?

вот мой командир.Свойства commandtext = "выбрать функции row_number() над(приказ studentid сок) как строки,числа от tblstudinfo где выполняться поиск в < 2"

и там было написано недопустимое имя столбца "database_id".

ZurdoDev

Вы хотите сделать что-то вроде этого:

ВЫБИРАТЬ *
ОТ (
ВЫБИРАТЬ
ROW_NUMBER () OVER (ORDER BY studentid ASC) AS Row#,
номер
Из tblstudinfo
) икс
Где x. строка# между 2 и 4

Member 12919944

это работает, чувак. откуда взялся крест ??

ZurdoDev

x-это псевдоним производной таблицы. Выбрать * из (материал внутри) как Х

Member 12919944

вот эта часть ? ") икс"

ZurdoDev

Да, то, что находится внутри скобок, рассматривается как таблица снаружи. Так что вам просто нужно дать ему имя. Я использую x. Это может быть что угодно.