Что такое эквивалент T-SQL синтаксиса MySQL LIMIT x, y?

Возможный дубликат:
Как написать (MySQL) "LIMIT" в SQL Server?

Как я могу изменить свой запрос с помощью LIMIT Inside для SQL-Server?

Код:

SELECT apretiz FROM tableApoint WHERE price = '$newprice' LIMIT 5;

Многие вещи не работают, поэтому просто просите о помощи

И как я могу изменить LIMIT 5,10 на примере? Не могу ли я использовать TOP для этого?

Ответ 1

Как я сказал, это менее часа назад, вы должны использовать TOP! (LIMIT используется для MYSQL)

Поэтому попробуйте удалить LIMIT 5 и сделайте SELECT TOP(5) apretiz.

Также попробуйте добавить порядок (по той же причине, что и раньше).

Пожалуйста, сделайте поиск, прежде чем задавать вопросы. Ссылка на старый вопрос

Ответ 2

Начиная с SQL Server 2012, вы можете написать

...
ORDER BY thisColumn, thatColumn
OFFSET 5 ROWS FETCH NEXT 5 ROWS ONLY

Ответ 3

Используйте ключевое слово TOP:

 SELECT TOP 5 pretiz 
 FROM tableApoint WHERE price = '$newprice'

Использование LIMIT 5, 10 не является частью стандарта SQL и доступно только в MySQL.

Вы можете использовать ROW_NUMBER() для SQL в качестве временного решения и получите желаемый результат.

SELECT * FROM ( 
  SELECT *, ROW_NUMBER() OVER (ORDER BY name) as row FROM tableApoint 
) a WHERE row >= 5 and row <= 10

Ответ 4

SQL Server 2005 и выше

Если вы используете SQL Server 2005 и выше, вы можете использовать функцию ROW_NUMBER для назначения уникальных номеров вашим строкам, а затем выбрать диапазон значений из вывода.

Автор сценария:

CREATE TABLE table1
(
    textvalue VARCHAR(10) NOT NULL
);

INSERT INTO table1 (textvalue) VALUES
   ('i'),
   ('a'),
   ('e'),
   ('h'),
   ('c'),
   ('l'),
   ('g'),
   ('m'),
   ('d'),
   ('k'),
   ('j'),
   ('f'),
   ('b'),
   ('n');

;WITH letters as
(
    SELECT  textvalue
        ,   ROW_NUMBER() OVER(ORDER BY textvalue) rownum 
    FROM    table1
)
SELECT  textvalue
FROM    letters
WHERE   rownum  BETWEEN 6 AND 10;

Вывод:

TEXTVALUE
---------
    f
    g
    h
    i
    j