原本如果要在MySQL中隨機抓一筆資料,我習慣用SELECT * FROM `Table` ORDER BY RAND() LIMIT 1這樣的語法來達到,實在是很方便,但今天我看到一篇文章 Selecting Random Records With SQL 該文作者詳列出各種資料庫隨機抓一筆資料的SQL語法並附有效能測試圖供參考。
SQL Server 2005
SELECT TOP 1 Field1, …, FieldN
FROM Table1
ORDER BY NEWID()
Access
SELECT TOP 1 Field1 , …, FieldN
FROM Table1
ORDER BY Rnd(Field1)
MySQL
SELECT Field1, …, FieldN
FROM Table1
ORDER BY RAND()
LIMIT 1
Oracle 10g Express
SELECT Field1, …, FieldN
FROM ( SELECT Field1, …, FieldN
FROM Table1
ORDER BY dbms_random.value)
WHERE rownum <= 1
SQLite 3
SELECT Field1, …, Field2
FROM Table1
ORDER BY Random()
LIMIT 1
PostgreSQL 8.3
SELECT 『Field1″, 『…』, 『FieldN』
FROM 『Table1″
ORDER BY RANDOM()
LIMIT 1
原文網址:http://www.carlj.ca/2007/12/16/selecting-random-records-with-sql/
原文部落格:http://www.carlj.ca/




