Я хочу выбрать набор записей в таблице SQL Server.Получить набор записей в таблице в SQL Server
В SQL Server, я могу это сделать:
select TOP 40,60 *
from sometable
order by name
Я хочу, чтобы получить 40-й до 60-й строки.
спасибо.
Я хочу выбрать набор записей в таблице SQL Server.Получить набор записей в таблице в SQL Server
В SQL Server, я могу это сделать:
select TOP 40,60 *
from sometable
order by name
Я хочу, чтобы получить 40-й до 60-й строки.
спасибо.
я сделал это, как этот запрос
WITH temp AS
(SELECT *, ROW_NUMBER() OVER (ORDER BY name) AS 'RowNumber'
FROM sometable
)
SELECT * FROM temp WHERE RowNumber BETWEEN 40 AND 60
Спасибо за комментарий ,
LIMIT существует в Oracle, но с разными аргументами, первый аргумент указывает смещение первой строки для возврата, а второй указывает максимальное количество возвращаемых строк. Смещение начальной строки равно 0 (не 1):
SELECT * FROM sometbl Order by name LIMIT 40,100; # Retrieve rows 41-100
Или вы можете действовать как;
SELECT * FROM
(
SELECT st.*, Row_Number() OVER (ORDER BY name) rn FROM sometable st
)
WHERE rn BETWEEN 40 AND 60;
Использование Row_number
функции и выборки строк нужно
WITH tmp AS
(SELECT *, ROW_NUMBER() OVER (ORDER BY a.name) AS 'rn', a.* FROM table a)
SELECT * FROM tmp WHERE rn BETWEEN 40 AND 60
Попробуйте
SELECT * FROM
(
SELECT table.*, Row_Number() OVER (ORDER BY name) rank FROM table
)
WHERE rank BETWEEN 40 AND 60;
Возможный дубликат http://stackoverflow.com/questions/470542/how-do-limit-the-number-of-rows-returned-by-an-oracle-query-after-ordering. – Raj
Фактически - ** нет **; вы не можете запустить этот запрос в SQL Server - он не знает ключевое слово 'LIMIT', это расширение, специфичное для MySQL –
. Я думаю, что вопрос неправильно помечен. 'LIMIT' - это синтаксис MySql, и речь идет о Oracle, и они не помечены. Не имеет никакого отношения к SQL SERVER – Raj