sqlserver中的内部查询排序
我有一个问题:sqlserver中的内部查询排序,sql,sql-server,sorting,subquery,Sql,Sql Server,Sorting,Subquery,我有一个问题: SELECT * FROM (SELECT COLA, COLB, COLC, COLD, ROW_NUMBER() OVER(ORDER BY COLA) AS ROWNUMBER FROM TABLEXYZ)AS Tab1 WHERE ROWNUMBER BETWEEN 1 AND 10 ORDER BY COLA 如果必须
SELECT *
FROM (SELECT COLA,
COLB,
COLC,
COLD,
ROW_NUMBER() OVER(ORDER BY COLA) AS ROWNUMBER
FROM TABLEXYZ)AS Tab1
WHERE ROWNUMBER BETWEEN 1 AND 10
ORDER BY COLA
如果必须根据COLA对查询进行排序,则此查询可以正常工作,但如果尝试根据COLB、COLC等进行排序,则会出现问题。排序不起作用。
我想对内部表进行排序,但order by子句不起作用,因此我的排序结果不准确。我认为排序也应该在查询的rownumber子句中进行。我认为排序也应该在查询的rownumber子句中进行。尝试使用TOP 100%
SELECT *
FROM (SELECT TOP 100% COLA,
COLB,
COLC,
COLD,
ROW_NUMBER() OVER(ORDER BY COLA) AS ROWNUMBER
FROM TABLEXYZ
ORDER BY COLB ASC) AS Tab1
WHERE ROWNUMBER BETWEEN 1 AND 10
ORDER BY COLA
试着使用100%的TOP
SELECT *
FROM (SELECT TOP 100% COLA,
COLB,
COLC,
COLD,
ROW_NUMBER() OVER(ORDER BY COLA) AS ROWNUMBER
FROM TABLEXYZ
ORDER BY COLB ASC) AS Tab1
WHERE ROWNUMBER BETWEEN 1 AND 10
ORDER BY COLA
嗯。。。如果上述方法不起作用,没关系,我只是测试了一下:
select * from(
select top 10 ROW_NUMBER() OVER(Order by ColumnA) as ROWN, ColumnA, ColumnB
from dbo.TableXYZ) as lala
order by ColumnB
它工作完美无瑕。老实说,我不知道为什么您的查询不起作用(您没有这样说),但这实现了完全相同的效果。嗯。。。如果上述方法不起作用,没关系,我只是测试了一下:
select * from(
select top 10 ROW_NUMBER() OVER(Order by ColumnA) as ROWN, ColumnA, ColumnB
from dbo.TableXYZ) as lala
order by ColumnB
它工作完美无瑕。老实说,我不知道为什么您的查询不起作用(您没有这样说),但这实现了完全相同的效果。您需要澄清“不起作用”。发布示例数据、实际输出和预期输出。您是否希望,比如,可乐公司订购的前10项产品,以及随后由可乐公司订购的10项产品?您是否提前知道(即在编写代码时)您希望数据如何过滤和排序,或者它必须是动态的?如果没有来自的
,您的查询如何工作?假设有100条记录,我们一次只显示其中的10条。现在,当我对外部查询执行一个between子句,然后对其进行排序时,它只会对作为外部查询结果集一部分的10条记录进行排序。对于正在排序的用户,它将是不正确的,因为内部查询排序不正确。@Lamak I修复了上面的原始查询。您需要澄清“不起作用”。发布示例数据、实际输出和预期输出。您是否希望,比如,可乐公司订购的前10项产品,以及随后由可乐公司订购的10项产品?您是否提前知道(即在编写代码时)您希望数据如何过滤和排序,或者它必须是动态的?如果没有来自
的,您的查询如何工作?假设有100条记录,我们一次只显示其中的10条。现在,当我对外部查询执行一个between子句,然后对其进行排序时,它只会对作为外部查询结果集一部分的10条记录进行排序。对于正在排序的用户,它将不正确,因为内部查询排序不正确。@Lamak I修复了上面的原始查询。您尝试过这个吗?它应该满足你的要求。你试过这个吗?它应该满足你的要求。