从数据库中选择一个随机行

Posted

技术标签:

【中文标题】从数据库中选择一个随机行【英文标题】:Select a random row from a db 【发布时间】:2013-01-12 14:30:46 【问题描述】:

我正在寻找一种解决方案,它可以从 hsql db 返回随机行。

CREATE TABLE Playlist(
    id INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
    name VARCHAR(255) NOT NULL,
);

有什么想法吗?

更新:

SELECT LIMIT 0 1 RAND(), p.name as foo
From Playlist p
ORDER BY foo

通过此语句,我得到一个随机数,但不是随机播放列表名称。

【问题讨论】:

哪个 RDBMS?你试过什么? ***.com/questions/19412/… 涵盖了这个 我可以取回一个随机数,但不能取回随机元素... 请把它写成答案,这样我就可以排除它了。谢谢你的解决方案!!! 写在下面@PeterWooster :D 【参考方案1】:

你应该去How to request a random row in SQL?

它涵盖了很多关于如何做你需要做的事情的选项。

SELECT p.name as foo
From Playlist p
ORDER BY RAND() LIMIT 1

如果您使用 Oracle,则需要使用 Rownum 而不是 limit 的子选择。见How do I limit the number of rows returned by an Oracle query after ordering?

【讨论】:

感谢@bonCodigo,请注意,限制在 mysql 中运行良好,但在 oracle 中不行,它变得更加丑陋。 忘记添加链接了.. ;) viralpatel.net/blogs/…

以上是关于从数据库中选择一个随机行的主要内容,如果未能解决你的问题,请参考以下文章

mysql-从每个id中选择一个随机行

从SQL数据库中选择随机行。

Pandas 数据框中的随机行选择

从文件中选择随机行

从 sqlite 表中选择随机行

从mysql中的大表中快速选择随机行