【发布时间】:2014-08-12 19:23:46
【问题描述】:
我有一个这样的查询:SELECT TOP 20 a.Job_No FROM dbo.ScheduledatesFF 它给了我前 20 个结果,但我想从 20 开始得到 20 个结果,如何设置偏移量?
我试过:OFFSET 20 在查询结束时出现了这个错误:
Incorrect syntax near 'OFFSET'
我在mysql中知道它的Offset,在SQL中有什么不同吗?
这给了我一个错误:
SELECT
a.Job_No
FROM (
SELECT
ROW_NUMBER() OVER (ORDER BY a.Job_No) as RowNum
FROM dbo.ScheduledatesFF
FROM dbo.ScheduledatesFF AS a
INNER JOIN dbo.tblCustomers AS c
ON a.Job_No = c.Job_No
INNER JOIN dbo.scheduledatesSS AS z
ON a.Job_No = z.Job_No
LEFT OUTER JOIN dbo.maxscheddate AS m
ON a.Job_No = m.Job_No
) AS MyDerivedTable
WHERE MyDerivedTable.RowNum BETWEEN 0 AND 20
Incorrect syntax near the keyword 'FROM'.
这是我最近的一次:
SELECT a.Job_No, ROW_NUMBER() OVER (ORDER BY a.Job_No) as datacounter FROM dbo.ScheduledatesFF AS a INNER JOIN dbo.tblCustomers AS c ON a.Job_No = c.Job_No INNER JOIN dbo.scheduledatesSS AS z ON a.Job_No = z.Job_No LEFT OUTER JOIN dbo.maxscheddate AS m ON a.Job_No = m.Job_No
但是在 datacounter 的 where 子句中它说它不存在
【问题讨论】:
-
你看the documentation了吗?您运行的是 SQL Server 2012 还是更高版本?
-
这个问题似乎是题外话,因为这涵盖了虚构的语法
-
也许尝试从更简单的开始。现在,您拥有
FROM dbo.ScheduledatesFF FROM dbo.ScheduledatesFF,无论您尝试使用哪种分页语法,它都会失败。 -
您可能会考虑为您的 SQL 代码确定一种您可以接受的格式,然后一致地应用它。您可以从那些编辑过您的问题的人中观察到,它几乎无法解析,更不用说在滚动几页时理解问题了。
-
@AaronBertrand MySQL 可以选择带有 OFFSET 的 LIMIT 语法。
LIMIT row_count(0 偏移)或LIMIT offset, row_count或LIMIT row_count OFFSET offset
标签: sql sql-server