在子查询语句(或视图等)中,不能使用Order by语句,除非使用TOP 或 FOR XML

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/zhang_meixia/article/details/48338079


在子查询语句中,不能使用Order by语句,除非使用topfor xml

如下面的表t_table

field1field2

11     eee

11     bbb

44     aaa

33     ddd

55     ccc

 

有下面的SQL语句

select* from  (select* from t_table order by field1)a[L1] 

运行是会出错的,错误信息如下:

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

 

这里是一个子查询,在子查询中使用了order by ,但是没有使用top 关键字,所以会报错。


如果改成下面的SQL语句:

select* from  (select top 3 * from t_tableorder by field1)a

 

即能得到正确结果。

field1       field2

11             bbb

11             eee

33             ddd




展开阅读全文

sql:除非同时指定了 TOP,否则 ORDER BY 子句在视图、内嵌函数、派生表和子查询中无效。

09-22

DECLARE @id SMALLINT rnSET @id=0 rnWHILE(@id<28) rn BEGIN rn IF(SELECT person_info.person_info_user_id,person_info.person_info_xingming,person_info.person_info_age,person_info.person_info_sex_example,person_jiaoyu.person_jiaoyu_xueli_example,person_jiaoyu.person_jiaoyu_zhuanye_name,person_gengxin.person_gengxin_indete FROM person_info,person_jiaoyu,person_gengxin ORDER BY person_gengxin.person_gengxin_id DESC) BEGIN rn SET @id=@id+1 rn ENDrn ENDrnrn---------------------------------------------------------------rn我sql学的不大好,大家帮一下,rn我想从数据库中搜出28人的数据,rn是按他们的更新时间来的rnperson_gengxin.person_gengxin_id在数据库中是一个一次递增1的bigint。rn谁的时间更新了谁person_gengxin.person_gengxin_id的值就最大。rn--------------------------------------------------------------------rn: System.Data.SqlClient.SqlException: 除非同时指定了 TOP,否则 ORDER BY 子句在视图、内嵌函数、派生表和子查询中无效。rnrn源错误: rnrn执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪信息确定有关异常原因和发生位置的信息。 rnrn堆栈跟踪: rnrnrn[SqlException: 除非同时指定了 TOP,否则 ORDER BY 子句在视图、内嵌函数、派生表和子查询中无效。]rn System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream) +723rn System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior) +45rn System.Data.SqlClient.SqlCommand.System.Data.IDbCommand.ExecuteReader(CommandBehavior behavior) +5rn System.Data.Common.DbDataAdapter.FillFromCommand(Object data, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior) +304rn System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior) +77rn System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, String srcTable) +36rn IndexData.Page_Load(Object sender, EventArgs e) +142rn System.Web.UI.Control.OnLoad(EventArgs e) +67rn System.Web.UI.Control.LoadRecursive() +35rn System.Web.UI.Page.ProcessRequestMain() +725rnrn rn 论坛

没有更多推荐了,返回首页