原本如果要在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/

Tagged :

你可能會感興趣

留下迴響





*