我有一个问题
Select
(SELECT id FROM xyz M WHEREM.ID=G.ID AND ROWNUM=1 ) TOTAL_X,
count(*) from mno G where col1='M' group by col2
Run Code Online (Sandbox Code Playgroud)
现在从子查询我必须为此获取ramdom id
Select
(SELECT id FROM xyz M WHEREM.ID=G.ID AND ROWNUM=1 order by dbms_random.value ) TOTAL_X,
count(*) from mno G where col1='M' group by col2
Run Code Online (Sandbox Code Playgroud)
但是,oracle显示错误
"Missing right parenthesis".
Run Code Online (Sandbox Code Playgroud)
查询有什么问题,我怎么能得到这个查询来获得随机ID.请帮忙.
即使你所做的是合法的,它也不会给你你想要的结果.ROWNUM过滤器将在ORDER BY之前应用,因此您只需对一行进行排序.
你需要这样的东西.我不确定这个确切的代码是否适用于相关的子查询,但基本的一点是你需要有一个子查询包含没有ROWNUM过滤器的ORDER BY,然后将ROWNUM过滤器应用一级.
WITH subq AS (
SELECT id FROM xyz M WHERE M.ID=G.ID order by dbms_random.value
)
SELECT (SELECT id FROM subq WHERE rownum = 1) total_x,
count(*)
from mno g where col1='M' group by col2
Run Code Online (Sandbox Code Playgroud)