SQL-ServerのLIMITInsideを使用してクエリを変更するにはどうすればよいですか?
コード:
SELECT apretiz FROM tableApoint WHERE price = '$newprice' LIMIT 5;
多くのものが機能していないので、助けを求めるだけです
そして、どうすればLIMIT 5,10を例で変更できますか?TOPは使えませんか?
SQL-ServerのLIMITInsideを使用してクエリを変更するにはどうすればよいですか?
コード:
SELECT apretiz FROM tableApoint WHERE price = '$newprice' LIMIT 5;
多くのものが機能していないので、助けを求めるだけです
そして、どうすればLIMIT 5,10を例で変更できますか?TOPは使えませんか?
SQL Server 2012 以降、次のように記述できます。
...
ORDER BY thisColumn, thatColumn
OFFSET 5 ROWS FETCH NEXT 5 ROWS ONLY
1時間も経たないうちに言ったように、TOPを使わなければなりません!(LIMITはMYSQLに使用されます)
だから、削除LIMIT 5
して実行してみてくださいSELECT TOP(5) apretiz
。
また、(以前と同じ理由で)順序を追加してみてください。
質問する前に検索してください。古い質問へのリンク
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
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