【问题标题】:How to select 10 rows from column in OracleOracle如何从列中选择10行
【发布时间】:2015-05-22 08:59:21
【问题描述】:

我在 Oracle 中有一个表,其中包含客户的识别号列“识别号”。我想选择 10 个可选的身份号码 - 怎么做;你能帮帮我吗?

附:我是 Pl/SQL 的新手

【问题讨论】:

    标签: sql oracle select


    【解决方案1】:

    如果您只需要任意 10 个随机行,则只需使用 ROWNUM

    SELECT * FROM table_name 
       WHERE ROWNUM <=10;
    

    如果您想要 10 行满足条件的特定值集,则添加一个过滤谓词

    SELECT * FROM table_name 
    WHERE identification number IN (1, 2, 3,4, 5, 6, 7, 8, 9, 10);
    

    如果identification number 列有重复值,则再次添加 ROWNUM 以过滤行,这些行将再次被随机选择:

    SELECT * FROM table_name 
       WHERE identification number IN (1, 2, 3,4, 5, 6, 7, 8, 9, 10) 
       AND   ROWNUM <=10;
    

    如果你想在一个特定的ORDER中有10行,那么你必须先对它们进行排序,然后应用ROWNUM来限制最终输出中的行数:

    SELECT * FROM(
       SELECT * FROM table_name 
          WHERE identification number IN (1, 2, 3,4, 5, 6, 7, 8, 9, 10) 
        ORDER BY identification number
                 )
      WHERE ROWNUM <=10;
    

    您可能还对 Oracle 12c 中引入的新 Top-n row limiting 功能感兴趣。

    【讨论】:

    • 谢谢,我用 select distinct 和 rownum 做到了
    • @Koshuta 另外,请记住,distinct 应用于选择列表中的所有列,而不仅仅是放在 distinct 之后的列。
    • “前 10 行”与"any 10 random rows." 不一样这里是一个PL SQL 实现:select * from table where ROWNUM &lt;= 10 ORDER by dbms_random.value;
    猜你喜欢
    • 2012-05-08
    • 1970-01-01
    • 1970-01-01
    • 2012-02-13
    • 2015-07-07
    • 2011-09-14
    • 1970-01-01
    • 1970-01-01
    • 2015-01-23
    相关资源
    最近更新 更多