除非另外还指定了 TOP 或 FOR XML

 

执行下面SQL 会收到如题的错误.这是为什么呢? 注意红色部分,它属于子查询,再关注出错信息.问题出在order by......

select location from

(Select *From LOCATION Where WAREHOUSE = N'W3_SHANGHAI'And PUT_ZONE = N'AA'And LOCATION_TYPE = N'STO'

Order By LOCATION Asc)as t1 where

not exists(select 1 from inventory where(qty>0 or qty_expected>0)and

inventory.location = t1.location and inventory.warehouse = t1.warehouse)

order by t1.location

OK,就是这样>>>>>因为作为子查询,如果有order ...,规定必须有TOP,所以红色部分改成 Select top 100 percent * From LOCATION Where WAREHOUSE = N'W3_SHANGHAI' And PUT_ZONE = N'AA' And LOCATION_TYPE = N'STO' Order By LOCATION Asc 就漂亮地运行啦!

我们可以举一反三如:

select top 10 id from table ...order by...

select top 100 percent id from table ... order by ...

也许有问.SELECT TOP 100 PERCENT这是虾米东西啊. 继续说明:

--返回符合条件的100%的记录,即所有符合条件的记录

SELECT TOP 100 PERCENT *

--返回符合条件的100条记录,即只返回符合条件的100条记录

SELECT TOP 100 *

甚至我们可以这样写 SELECT TOP 30 PERCENT from table ... order by...desc/asc

posted @ 2011-06-01 16:15  俗雅冰山  阅读(498)  评论(0编辑  收藏  举报