Mysql
 sql >> база данни >  >> RDS >> Mysql

MySQL LIMIT клауза еквивалентна за SQL SERVER

В SQL Server 2012 има поддръжка за стандарта ANSI OFFSET / FETCH синтаксис. Аз бложих за това и ето официалният документ (това е разширение към ORDER BY ). Вашият синтаксис, преобразуван за SQL Server 2012, би бил:

SELECT ID, Name, Price, Image 
  FROM Products 
  ORDER BY ID ASC 
  OFFSET (@start_from - 1) ROWS -- not sure if you need -1
    -- because I don't know how you calculated @start_from
  FETCH NEXT @items_on_page ROWS ONLY;

Преди това трябва да използвате различни решения, включително ROW_NUMBER() метод. Вижте тази статия и последващата дискусия . Ако не сте на SQL Server 2012, не можете да използвате стандартен синтаксис или нестандартния LIMIT на MySQL но можете да използвате по-подробно решение като:

;WITH o AS
(
    SELECT TOP ((@start_from - 1) + @items_on_page)
         -- again, not sure if you need -1 because I 
         -- don't know how you calculated @start_from
      RowNum = ROW_NUMBER() OVER (ORDER BY ID ASC)
      /* , other columns */
    FROM Products
)
SELECT 
    RowNum
    /* , other columns */
FROM
    o
WHERE
    RowNum >= @start_from
ORDER BY
    RowNum;

Има много други начини да одирате тази котка, това е малко вероятно да е най-ефективният, но от гледна точка на синтаксиса вероятно е най-простият. Предлагам да прегледате връзките, които публикувах, както и дублиращите се предложения, отбелязани в коментарите към въпроса.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL:транзакция в рамките на съхранена процедура

  2. Номер на ред за група в mysql

  3. Изберете най-често срещаната стойност от поле в MySQL

  4. показване на данни от SQL база данни в php/html таблица

  5. MySQL:ALTER IGNORE TABLE дава нарушение на ограничението за целостта