Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 按条款排序似乎不起作用_Sql_Sql Server_Stored Procedures - Fatal编程技术网

Sql 按条款排序似乎不起作用

Sql 按条款排序似乎不起作用,sql,sql-server,stored-procedures,Sql,Sql Server,Stored Procedures,我有一个利用TOP和orderby的全文搜索。我在另一个数据库中使用了相同的查询,并且我的顺序始终保持不变。由于某些原因,在不同的数据库上,顺序似乎总是有一些变化。不是很多,只是一点点。这是它的样子 SELECT TOP 20 * FROM ( SELECT DISTINCT CandidateID, [Resume], FirstName, MiddleName, LastName, ROW_NUMBER() OVER (ORDER BY CreatedDate DESC)

我有一个利用TOP和orderby的全文搜索。我在另一个数据库中使用了相同的查询,并且我的顺序始终保持不变。由于某些原因,在不同的数据库上,顺序似乎总是有一些变化。不是很多,只是一点点。这是它的样子

SELECT TOP 20 * FROM 
(
SELECT DISTINCT CandidateID, [Resume], FirstName, MiddleName, LastName, 
       ROW_NUMBER() OVER (ORDER BY CreatedDate DESC) AS num

       FROM dbo.tblCandidates  WHERE (CONTAINS(([resume]), @SearchItem))

) AS a 
WHERE num > @start
有人能想出在这种情况下ORDERBY子句不总是起作用的原因吗


谢谢

您没有一个
ORDER BY
子句(
OVER()
子句中的一个用于确定
行数()
,通常对输出的顺序没有任何影响)。如果您在其他系统上观察到此查询的特定顺序,那么它完全是巧合,不应该依赖。如果您想要一个特定的订单,您需要将
orderby
添加到外部查询中,无论您认为它应该做什么,或者您在其他地方观察到了什么

SELECT TOP 20 * FROM 
(
SELECT DISTINCT CandidateID, [Resume], FirstName, MiddleName, LastName, 
       ROW_NUMBER() OVER (ORDER BY CreatedDate DESC) AS num

       FROM dbo.tblCandidates  WHERE (CONTAINS(([resume]), @SearchItem))

) AS a 
WHERE num > @start
ORDER BY num;

您没有一个
orderby
子句(
OVER()
子句中的一个用于确定
行数()
并且通常不会对输出的顺序产生任何影响)。如果您在其他系统上观察到此查询的特定顺序,那么它完全是巧合,不应该依赖。如果您想要一个特定的订单,您需要将
orderby
添加到外部查询中,无论您认为它应该做什么,或者您在其他地方观察到了什么

SELECT TOP 20 * FROM 
(
SELECT DISTINCT CandidateID, [Resume], FirstName, MiddleName, LastName, 
       ROW_NUMBER() OVER (ORDER BY CreatedDate DESC) AS num

       FROM dbo.tblCandidates  WHERE (CONTAINS(([resume]), @SearchItem))

) AS a 
WHERE num > @start
ORDER BY num;

CreatedDate
包含重复项?我很好奇您的另一个数据库是否索引了
orderby
列。您是否尝试过在WHERE下方添加一个
orderbynum
?查询中缺少它。除非使用
Order by
指定,否则不能保证行的顺序
Row_number()over()
本身不强制行的顺序;它只是分配数字。将
orderbynum
追加到查询中。
CreatedDate
包含重复项?我很好奇您的其他数据库是否对
orderbynum
列进行了索引。您是否尝试过在WHERE下方添加一个
orderbynum
?查询中缺少它。除非使用
Order by
指定,否则不能保证行的顺序
Row_number()over()
本身不强制行的顺序;它只是分配数字。在查询中追加
orderbynum
。谢谢Aaron和Michael。。。就这样。我真的很感激。谢谢亚伦和迈克尔。。。就这样。我真的很感激。