日期:2014-05-17  浏览次数:20402 次

SQL基础问题如何排序查询

select * from (select *, row_number() over(order by id) RowNumber  from SystemLog  order by logData desc)t 
--这语要怎么写.这样写报错
--要用ID做行号,获取行号又得以哪个字段来排序,
--实际需求要要按logData这个日期类型从最近时间来排序,这样写又报错,不解


报错提示
The ORDER BY clause is invalid in views, inline functions, derived tables, subqueries, and common table expressions, unless TOP, OFFSET or FOR XML is also specified.

望写出来的大牛告诉我一下,为啥会有这个提示,为什么要用大牛您写的方式才能解决.谢谢.

------解决方案--------------------

--要加 TOP 100 PERCENT,SQL语法规定了
select * from (select TOP 100 PERCENT *, row_number() over(order by id) RowNumber  from SystemLog  order by logData desc)t 

------解决方案--------------------
引用:
Quote: 引用:


--要加 TOP 100 PERCENT,SQL语法规定了
select * from (select TOP 100 PERCENT *, row_number() over(order by id) RowNumber  from SystemLog  order by logData desc)t 

谢谢要用TOP可有不现实呀.如果数据多的话用TOP不现实吧.


TOP 100 PERCENT就是百分之百的意思 是查询的全部数据
------解决方案--------------------
try this,

select * from 
(select *,row_number() over(order by id) 'RowNumber' 
 from SystemLog) t
order by logData desc

------解决方案--------------------

select row_number() over(order by id) RowNumber,* from SystemLog


这样就可以了,为什么你还要排一次序。如果要用logData再排序,请

select row_number() over(order by id,logData desc) RowNumber,* from SystemLog