select * from table_a where a_id in 
(select b_id from (select top 10 b_1 from 
(select top 100 b_id from table_b order by b_1 asc) aa
order by b_1 desc) aa
order by b_1 asc)该语句执行师出错,提示如下:
消息 1033,级别 15,状态 1,第 5 行
除非另外还指定了 TOP 或 FOR XML,否则,ORDER BY 子句在视图、内联函数、派生表、子查询和公用表表达式中无效。请大侠帮忙分析一下,该如何修改
(该语句要实现的是:先从表table_b中选10条记录(b_id),按b_1升序第91到100条,然后从table_a中选10条记录,使a_id等于前面table_b中的10个b_id,并按照b_1的升序列出)

解决方案 »

  1.   

    select * from table_a where a_id in 
    (select top 100 percent b_id from (select top 10 b_1 from 
    (select top 100 b_id from table_b order by b_1 asc) aa
    order by b_1 desc) aa
    order by b_1 asc)
      

  2.   

    --如果子查询要排序,需要加top ...select * from table_a where a_id in 
    (select top 100 percent b_id from (select top 10 b_1 from 
    (select top 100 b_id from table_b order by b_1 asc) aa
    order by b_1 desc) aa
    order by b_1 asc)