可能是重复问题:
如何在 SQL Server 中编写(MySQL)“LIMIT”?
如何为 SQL-Server 更改带有 LIMIT
的查询?
SELECT apretiz FROM tableApoint WHERE price = '$newprice' LIMIT 5;
如何更改LIMIT 5,10
?我可以使用TOP
吗?
可能是重复问题:
如何在 SQL Server 中编写(MySQL)“LIMIT”?
如何为 SQL-Server 更改带有 LIMIT
的查询?
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
FETCH NEXT <N>
is zero indexed so to get the first and only first row do OFFSET 0 ROWS FETCH NEXT 1 ROWS ONLY
- fartwhif正如我一个小时之前所说,你必须使用 TOP!(LIMIT 仅用于 MYSQL)
因此,请尝试删除 LIMIT 5
并执行 SELECT TOP(5) apretiz
。
同时,请添加 order by(与之前相同的原因)。
在提问之前请先进行搜索。旧问题链接
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
SELECT *
的语法,所以在这里给出:SELECT TOP(5) * FROM [TableName]
。 - user6269864