我有一如下优化的SQL语句,但是它怎么不能在SQL数据库上执行呢。(这SQL语句的作用是选择segment_id最大的一条记录)
select * from (select * from table_name order by segment_id desc) where rownum <=1;报如下的错误:
Server: Msg 1033, Level 15, State 1, Line 1
The ORDER BY clause is invalid in views, inline functions, derived tables, and subqueries, unless TOP is also specified.
请帮忙解决一下,看这SQL语句有什么问题。谢谢。

解决方案 »

  1.   

    select * 
    from table_name 
    where rownum <=1 ----这个要是你的字段哦,不是oracle中的那个意思,要不就用 top 1 order by segment_id desc
      

  2.   

    select * 
    from table_name 
    where rownum <=1 ----这个要是你的字段哦,不是oracle中的那个意思,要不就用 top 1 
    order by segment_id desc如果想就返回一条记录:
    select  top 1 * 
    from table_name 
    order by segment_id desc
      

  3.   

    --oracle
    select * from table_name where rownum = 1 order by segment_id desc --sql server
    select top 1 * from table_name order by segment_id desc