a442579302
a442579302
2014-05-22 17:54
浏览 1.0k
已采纳

关于SQL子查询中使用order by的问题

最近回头看以前的数据库教材《数据库系统概论》人大 王珊 版的

有一段叙述:“需要特别指出的是,子查询的select语句不能使用 order by子句,order by子句只能对最终查询结果排序”

但是正好之前练习碰到个场景,就在子句中用了order by ,结果也是正确的。

所以我很疑惑,是书上说错了还是什么原因
下面是SQL

[code="java"]select userid from (select userid,min(createtime) from LT_BIZORDER t
where (t.status in (1,2,3,4,5) or (t.status=6 and t.endstatus in (0,1,2)))
and createtime > to_date('2014-06-01','yyyy/MM/dd')
group by t.userid order by min(createtime) asc)
where rownum<=10000[/code]

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

6条回答 默认 最新

  • lovejiegirl1
    lovejiegirl1 2014-05-22 20:43
    已采纳

    [code="java"]

    1.子查询是可以使用order by
    2.我测试了 select * from (子查询 order by)
    select * from table A where id not in (子查询 order by )

    都是可以的

    3、下面截取官档一段order by 和 rownum 一起用的范例!

    If you embed the ORDER BY clause in a subquery and place the ROWNUM condition in the top-level query, then you can force the ROWNUM condition to be applied after the ordering of the rows. For example, the following query returns the employees with the 10 smallest employee numbers. This is sometimes referred to as top-N reporting:

    SELECT * FROM
    (SELECT * FROM employees ORDER BY employee_id)
    WHERE ROWNUM < 11;
    [/code]

    点赞 评论
  • hadeslbf
    hadeslbf 2014-05-22 18:05

    子查询是可以用order by的,并且这个orderby 会影响主查询的结果顺序。
    书上写错了。

    点赞 评论
  • tank2140896
    tank2140896 2014-05-22 19:50

    当然影响啊,你from的张间接查询出来的表,由于该间接表已排好序,产生的结果当然受”间接表影响

    点赞 评论
  • iteye_20398
    iteye_20398 2014-05-22 22:11

    书上写错了。

    SELECT [TOP ] FROM [WHERE ] [ORDER BY [DESC|ASC]]
    里面[]表示根据实际需要可写可不写。

    最后说一句,书中不可能是都正确,随着对错误的纠正,也就了解的多了。

    点赞 评论
  • u010796208
    黄菲 2014-05-23 09:05

    可以用,只是最终结果不一样

    点赞 评论
  • swings2010
    R_engine 2014-06-15 13:12

    当order by 与 rownum一起使用时,当然有意义,因为子查询的结果会影响到最终的返回结果集,并且在这种情况下,order by必须写在子查询里。但是就其他的情况而论,在子查询里写order by 没有实际意义,反而影响查询效率。

    你可以尝试执行一个子查询中带有Order by,且没有rownum的sql。
    执行后查看执行计划,你会发现执行计划里根本没有对子查询做order by操作,因为它也觉得这么做没有必要。

    点赞 评论

相关推荐