【发布时间】:2015-05-22 08:59:21
【问题描述】:
我在 Oracle 中有一个表,其中包含客户的识别号列“识别号”。我想选择 10 个可选的身份号码 - 怎么做;你能帮帮我吗?
附:我是 Pl/SQL 的新手
【问题讨论】:
我在 Oracle 中有一个表,其中包含客户的识别号列“识别号”。我想选择 10 个可选的身份号码 - 怎么做;你能帮帮我吗?
附:我是 Pl/SQL 的新手
【问题讨论】:
如果您只需要任意 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 * from table where ROWNUM <= 10 ORDER by dbms_random.value;