Oracle 从表中随机行

发布于 2024-12-09 11:22:36 字数 241 浏览 0 评论 0原文

我找到了从 Oracle 表中选择随机行的解决方案。实际上以随机方式对行进行排序,但您只能获取第一行以获得随机结果。

SELECT *
FROM table
ORDER BY dbms_random.value;

我只是不明白它是如何工作的。 ORDER BY之后应该是用于排序的列。我看到“dbms_random.value”返回一个小于零的值。这种行为可以解释还是就是这样?

谢谢

I found this solution for selecting a random row from a table in Oracle. Actually sorting rows in a random manner, but you can fetch only the first row for a random result.

SELECT *
FROM table
ORDER BY dbms_random.value;

I just don't understand how it works. After ORDER BY it should be a column used for sorting. I see that "dbms_random.value" returns a value lower than zero. This behavior can be explained or is just like that?

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

一花一树开 2024-12-16 11:22:36

你也可以这样想:

SELECT col1, col2, dbms_random.value
FROM table
ORDER BY 3

在这个例子中,数字 3 = 第三列

you could also think of it like this:

SELECT col1, col2, dbms_random.value
FROM table
ORDER BY 3

In this example the number 3 = the third column

剩余の解释 2024-12-16 11:22:36

当您按 dbms_random.value 排序时,Oracle 按表达式排序,而不是按列排序。对于每条记录,Oracle 计算一个随机数,然后按该数字排序。

类似地,是这样的:

select * from emp order by upper(ename);

你有一个基于函数的 order by 。

When you order by dbms_random.value, Oracle orders by the expression, not for a column.For every record Oracle calculate a random number, and then order by this number.

In a similar way, is like this:

select * from emp order by upper(ename);

You have an order by based on a function.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文