在 SQL 数据库中选择随机行
从 SQL 数据库表中高效检索单个随机行需要仔细考虑。 虽然真正的随机性很难保证,但几种 SQL 技术提供了近乎随机的选择。
随机行选择的方法:
最佳方法因您的特定数据库系统而异:
MySQL 和 PostgreSQL:
此方法使用 RAND()
函数:
<code class="language-sql">SELECT column FROM table ORDER BY RAND() LIMIT 1;</code>
Microsoft SQL Server:
SQL Server 使用 NEWID()
函数:
<code class="language-sql">SELECT TOP 1 column FROM table ORDER BY NEWID();</code>
IBM DB2:
DB2 将 RAND()
函数与 FETCH FIRST
结合使用:
<code class="language-sql">SELECT column, RAND() AS IDX FROM table ORDER BY IDX FETCH FIRST 1 ROWS ONLY;</code>
甲骨文:
Oracle 在子查询中使用 dbms_random.value
:
<code class="language-sql">SELECT column FROM ( SELECT column FROM table ORDER BY dbms_random.value ) WHERE rownum = 1;</code>
这些方法为每行生成一个随机值,然后根据这些值对行进行排序。 然后,LIMIT
子句(或等效子句)选择顶行。 虽然不是完全随机的,但这些技术为大多数应用提供了实用的解决方案。 请记住性能影响,尤其是对于大型表,因为这些查询的计算成本可能很高。
以上是如何高效地从 SQL 数据库表中检索随机行?的详细内容。更多信息请关注PHP中文网其他相关文章!