Care este echivalentul T-SQL al sintaxei MySQL LIMIT x, y? [duplicat] (Programare, Sql, Server Sql, Bază De Date, Tsql)

pretyBoy a intrebat.

Posibil duplicat:
Cum se scrie un „LIMIT” (MySQL) în SQL Server?

Cum îmi pot modifica interogarea cu LIMIT Inside pentru un SQL-Server ?

Cod:

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

Multe lucruri nu funcționează, așa că cer doar ajutor

Și cum pot schimba LIMIT 5,10 de exemplu ? Nu pot să folosesc TOP pentru asta ?

Comentarii

  • Nici unul dintre răspunsurile de mai jos nu arată sintaxa pentru SELECT *, , așa că iat-o: SELECT TOP(5) * FROM [TableName] – user6269864
4 răspunsuri
ChapMic

Așa cum am spus-o acum mai puțin de o oră, trebuie să folosești TOP ! (LIMIT este folosit pentru MYSQL)

Deci, încercați să eliminați LIMIT 5 și faceți SELECT TOP(5) apretiz.

De asemenea, încercați să adăugați order by (din același motiv ca și înainte).

Vă rugăm să faceți o căutare înainte de a cere lucruri. Legătura cu întrebarea veche

Steve Kass

Începând cu SQL Server 2012, puteți scrie

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

Darren

Utilizați TOP cuvântul cheie:

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

Utilizarea LIMIT 5, 10 nu face parte din standardul SQL și este disponibilă numai în MySQL.

Ați putea folosi ROW_NUMBER() pentru SQL ca o soluție temporară și veți obține același rezultat dorit.

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

user756519

SQL Server 2005 și versiunile superioare

Dacă utilizați SQL Server 2005 și versiunile superioare, puteți utiliza ROW_NUMBER pentru a atribui numere unice rândurilor dvs. și apoi să alegeți intervalul de valori de la ieșire.

Script:

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;

Output:

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