sql - 在 Oracle sql 中选择带有子查询的随机记录

标签 sql database oracle

当我尝试从 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/

相关文章:

sql - INT 数据库字段如何与 VARCHAR 类型进行比较

ruby-on-rails - 如何避免 Rails 应用程序中的竞争条件?

mongodb - MongoDB 中新插入的文档肯定比旧文档具有 "bigger"_id 吗?

java - 当存储过程中有大部分逻辑时,我应该使用 JDBC 还是 Hibernate?

Oracle:如果字段为空则显示特殊文本

java - 使用 Ant 预编译 JSP 的最佳方法是什么

mysql - GROUP BY 不返回每个特定字段的所有行

mysql - 删除第n行mysql

sql - 如何将 “and or” where子句从sql查询转换为elasticsearch过滤器

mysql - 此路线图的数据库设计