在 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中文網其他相關文章!