Oracle SQL Developer查询5条随机行报错:SQL command not properly ended
Oracle查询随机5条数据的正确写法
你遇到的问题是因为用了MySQL的语法,Oracle不支持RAND()函数和LIMIT关键字,以下是两种适配Oracle的解决方案:
Oracle 12c及以上版本(推荐)
使用DBMS_RANDOM.VALUE生成随机值排序,配合FETCH FIRST语法限制行数:SELECT * FROM Table_Name ORDER BY DBMS_RANDOM.VALUE FETCH FIRST 5 ROWS ONLY;Oracle 11g及以下版本
需要通过子查询先完成随机排序,再用ROWNUM过滤行数:SELECT * FROM ( SELECT * FROM Table_Name ORDER BY DBMS_RANDOM.VALUE ) WHERE ROWNUM <= 5;
错误原因说明
- Oracle没有
RAND()函数,生成随机值需使用DBMS_RANDOM.VALUE; LIMIT是MySQL、PostgreSQL等数据库的语法,Oracle 12c及以上版本用FETCH FIRST ... ONLY实现行数限制,旧版本必须依赖ROWNUM(注意ROWNUM是先过滤再排序,所以必须将随机排序逻辑放在子查询中)。
内容的提问来源于stack exchange,提问作者DanT96
相关产品推荐
相关产品推荐

