20

重複の可能性:
SQL Serverで(MySQL)「LIMIT」を作成するにはどうすればよいですか?

SQL-ServerのLIMITInsideを使用してクエリを変更するにはどうすればよいですか?

コード:

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

多くのものが機能していないので、助けを求めるだけです

そして、どうすればLIMIT 5,10を例で変更できますか?TOPは使えませんか?

4

4 に答える 4

26

SQL Server 2012 以降、次のように記述できます。

...
ORDER BY thisColumn, thatColumn
OFFSET 5 ROWS FETCH NEXT 5 ROWS ONLY
于 2012-05-03T23:59:55.693 に答える
25

1時間も経たないうちに言ったように、TOPを使わなければなりません!(LIMITはMYSQLに使用されます)

だから、削除LIMIT 5して実行してみてくださいSELECT TOP(5) apretiz

また、(以前と同じ理由で)順序を追加してみてください。

質問する前に検索してください。古い質問へのリンク

于 2012-05-03T23:22:58.207 に答える
6

TOPキーワードを使用します:

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

LIMIT 5を使用すると、10はSQL標準の一部ではなく、MySQLでのみ使用できます。

SQLを一時的な解決策として使用するROW_NUMBER()と、同じ目的の出力が得られます。

SELECT * FROM ( 
  SELECT *, ROW_NUMBER() OVER (ORDER BY name) as row FROM tableApoint 
) a WHERE row >= 5 and row <= 10
于 2012-05-03T23:25:24.113 に答える
2

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
于 2012-05-03T23:34:45.167 に答える