碧玉在线,202.200.112.200,清明祭祀网
sql:除非另外还指定了 top 或 for xml,否则,order by 子句在视图、内联函数、派生表、子查询
执行sql语句:
select * from (
select * from tab where id>20 order by userid desc
) as a order by date desc
逻辑上看着挺对 但是报错:
除非另外还指定了 top 或 for xml,否则,order by 子句在视图、内联函数、派生表、子查询和公用表表达式中无效。
只要我们在嵌套子查询视图里面加入: top 100 percent 即可
select * from (
selecttop 100 percent* from tab where id>20 order by userid desc
) as a order by date desc
默认情况下,如果在子查询,函数,视图中尝试去使用order by,
create view dbo.vsortedorders as select orderid, customerid from dbo.orders order by orderid go
那么可能会遇到下面的错误
消息 1033,级别 15,状态 1,第 4 行 除非另外还指定了 top 或 for xml,否则,order by 子句在视图、内联函数、派生表、子查询和公用表表达式中无效。
原因就是针对一个表的select其实并不是返回一个表,而是一个游标。
如果一定要用怎么办呢?答案就是配合top 100 percent
select top (100) percent orderid, customerid from dbo.orders order by orderid, customerid desc
select top (100) percent意思是返回符合条件所有的记录,select top 100就是返回前一百条符合条件的记录
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
Oracle字符串函数length、upper、lower、initcap、 concat、instr、replace
网友评论