如何选择Oracle中的前100行?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (21)

我的要求是获得每个客户的最新订单,然后获得前100条记录。

我写了一个如下的查询来获取每个客户的最新订单。内部查询工作正常。但根据结果我不知道如何获得前100名。

    SELECT * FROM (
      SELECT id, client_id, ROW_NUMBER() OVER(PARTITION BY client_id ORDER BY create_time DESC) rn 
      FROM order
    ) WHERE rn=1

有任何想法吗?

提问于
用户回答回答于

在版本12.1中,Oracle引入了“真正的”Top-N查询。使用新的FETCH FIRST...语法,你也可以使用:

  SELECT * FROM (
    SELECT 
      id, 
      client_id, 
      create_time,
      ROW_NUMBER() OVER(PARTITION BY client_id ORDER BY create_time DESC) rn 
    FROM order
  ) 
  WHERE rn = 1
  ORDER BY create_time desc
  FETCH FIRST 100 ROWS ONLY)
用户回答回答于

你应该在oracle中使用rownum来完成你所寻求的任务

where rownum <= 100

扫码关注云+社区