在 SQL 資料庫中選擇隨機行
從 SQL 資料庫表中高效檢索單一隨機行需要仔細考慮。 雖然真正的隨機性很難保證,但幾種 SQL 技術提供了近乎隨機的選擇。
隨機行選擇的方法:
最佳方法因您的特定資料庫系統而異:
MySQL 和 PostgreSQL:
此方法使用 RAND()
函數:
SELECT column FROM table ORDER BY RAND() LIMIT 1;
Microsoft SQL Server:
SQL Server 使用 NEWID()
函數:
SELECT TOP 1 column FROM table ORDER BY NEWID();
IBM DB2:
DB2 將 RAND()
函數與 FETCH FIRST
結合使用:
SELECT column, RAND() AS IDX FROM table ORDER BY IDX FETCH FIRST 1 ROWS ONLY;
甲骨文:
Oracle 在子查詢中使用 dbms_random.value
:
SELECT column FROM ( SELECT column FROM table ORDER BY dbms_random.value ) WHERE rownum = 1;
這些方法為每行產生一個隨機值,然後根據這些值對行進行排序。 然後,LIMIT
子句(或等效子句)選擇頂行。 雖然不是完全隨機的,但這些技術為大多數應用提供了實用的解決方案。 請記住效能影響,尤其是對於大型表,因為這些查詢的計算成本可能很高。
以上是如何有效率地從 SQL 資料庫表中檢索隨機行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!