select TOP 1 * from (SELECT [id],Title,PublicTime From Announce where PublicTime> '2006-10-05' AND TYPE='2' ORDER BY PublicTime)
union
select TOP 1 * from (SELECT id,Title,PublicTime From Announce where PublicTime< '2008-09-05 00:00:00' AND TYPE='2' ORDER BY PublicTime desc)
以上SQL语句有错误吗??服务器: 消息 156,级别 15,状态 1,行 1
在关键字 'ORDER' 附近有语法错误。
服务器: 消息 1033,级别 15,状态 1,行 3
除非同时指定了 TOP,否则 ORDER BY 子句在视图、内嵌函数、派生表和子查询中无效。报这两个错误!

解决方案 »

  1.   

    order by 放在第二个语句后面.
      

  2.   

    select * from (SELECT TOP 1 [id],Title,PublicTime From Announce 
         where PublicTime> '2006-10-05' AND TYPE='2' ORDER BY PublicTime) t
    union
    select * from (SELECT TOP 1 id,Title,PublicTime From Announce 
        where PublicTime< '2008-09-05 00:00:00' AND TYPE='2' ORDER BY PublicTime desc) t
      

  3.   

    select TOP 1 * from (SELECT [id],Title,PublicTime From Announce where PublicTime> '2006-10-05' AND TYPE='2' ORDER BY PublicTime)
    union
    select TOP 1 * from (SELECT id,Title,PublicTime From Announce where PublicTime< '2008-09-05 00:00:00' AND TYPE='2' ORDER BY PublicTime desc)a--定义表名
      

  4.   

    special thanks to WangZWang(先来) 
    and thanks the other.
      

  5.   

    select TOP 1 * from (SELECT TOP 100 PERCENT [id],Title,PublicTime From Announce where PublicTime> '2006-10-05' AND TYPE='2' ORDER BY PublicTime)A
    union
    select TOP 1 * from (SELECT TOP 100 PERCENT [id],Title,PublicTime From Announce where PublicTime< '2008-09-05 00:00:00' AND TYPE='2' ORDER BY PublicTime desc)B
      

  6.   

    select * from ((select TOP 1 * from (SELECT id,Title,PublicTime From Announce where PublicTime> '2006-10-05' AND TYPE='2' ORDER BY PublicTime))
    union all
    (select TOP 1 * from (SELECT id,Title,PublicTime From Announce where PublicTime< '2008-09-05 00:00:00' AND TYPE='2' ORDER BY PublicTime desc)))t