当我尝试从 Oracle 数据库中将随机记录放入两个表时,其中一个表必须是 Order 和 order_detail。结果必须遵循一些条件,即订单有 3 个 order_detail 行,并且只是检索了一个随机订单。
这是我的代码:
SELECT order_id
FROM Oder
INNER JOIN order_detail
ON orderId.order_id = order_detail.FK_order_id
WHERE order_id IN
(SELECT order_detail.FK_order_id
FROM order_detail
GROUP BY FK_order_id
HAVING COUNT(FK_order_id) > = 3
)
ORDER BY (SYS.DBMS_RANDOM.VALUE);
我不知道在哪里放置 ROWNUM =1 以仅获取一条记录。
最佳答案
您必须在 SQL 中添加一个子查询 top 之后添加 ROWNUM,因为您正在按顺序添加 RANDOM,而 ORDER BY 是 SQL 的最后一个子句。因此,您还有一个级别的 SELECT,如下所示。
select order_id from (SELECT order_id
FROM Oder
INNER JOIN order_detail
ON orderId.order_id = order_detail.FK_order_id
WHERE order_id IN
(SELECT order_detail.FK_order_id
FROM order_detail
GROUP BY FK_order_id
HAVING COUNT(FK_order_id) > = 3
)
ORDER BY (SYS.DBMS_RANDOM.VALUE)) where rownum <=1;
关于sql - 在 Oracle sql 中选择带有子查询的随机记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50196383/