sql >> Databáze >  >> RDS >> Mysql

Ekvivalent klauzule MySQL LIMIT pro SQL SERVER

SQL Server 2012 podporuje standard ANSI OFFSET / FETCH syntax. na blogu toto a zde je oficiální dokument (toto je rozšíření k ORDER BY ). Vaše syntaxe převedená pro SQL Server 2012 by byla:

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;

Předtím musíte použít různá řešení, včetně ROW_NUMBER() metoda. Viz tento článek a následná diskuse . Pokud nepoužíváte SQL Server 2012, nemůžete použít standardní syntaxi nebo nestandardní LIMIT MySQL ale můžete použít podrobnější řešení, například:

;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;

Existuje mnoho dalších způsobů, jak stáhnout tuto kočku z kůže, tento pravděpodobně nebude nejúčinnější, ale z hlediska syntaxe je pravděpodobně nejjednodušší. Doporučuji zkontrolovat odkazy, které jsem zveřejnil, a také duplicitní návrhy uvedené v komentářích k otázce.



  1. Datový model pro aplikaci pro rezervaci lékařských schůzek

  2. nějaký limit počtu připojení k serveru SQL?

  3. Zkontrolujte, zda je objekt tabulkou, zobrazením nebo uloženou procedurou na serveru SQL pomocí funkce OBJECTPROPERTY()

  4. Webrick reaguje velmi pomalu. Jak to urychlit?