你可以使用很多種方式隨機選擇數據行;這在你想要往網站里加入動態特性的時候特別有效。例如,你可以隨便選擇一個產品,將其作為“今天的特色產品”來展示,或者質量評估人員(QA)可以生成一個隨機的調用表,以測量用戶的滿意度。

但是其中的障礙是SQL不允許隨機選擇列。好消息是,有一個簡單的技巧能夠在SQL里實現這一功能。

該解決方案基于uniqueidentifier這個數據類型。唯一的標識符,也叫做全局唯一標識符(Guaranteed Unique Identifiers,GUID),看起來就像下面這樣:

4C34AA46-2A5A-4F8C-897F-02354728C7B0

SQL服務器在很多情況下都會使用GUID,最明顯的可能就是復制過程了。當正常增長的單位數據列(identity column)沒有提供足夠的關鍵字時,你可以使用它們。要做到這一點,你就要創建一個uniqueidentifier類型的數據列,而這個類型缺省的值是NewID(),就像下面一樣:

CREATE TABLE MyNewTable
(
? PK uniqueidentifier NOT NULL DEFAULT NewID(),
? AnotherColumnvarchar(50) NOT NULL,
?? . . .

這個函數就像是解決我們選擇隨機列問題的鑰匙。我們可以簡單地調用NewID(),將其作為我們查詢里的一個虛擬列,就像下面這樣:

SELECT TOP 10 OrderID, NewID() as Random
FROM Orders
ORDER BY Random

最近我創建一個頁面,上面發表有10個隨機用戶的引言來贊美公司服務,在做這個的時候我用到了這個解決方案。用戶也可以在他們每次訪問網站的時候看到新的引言。

這是向網站加入新吸引點的簡單方法。既然你知道了如何發布隨機選擇的數據列,你看起來就像是一個SQL的明星了。


本文作者:Arthur Fuller開發數據庫應用程序已經有20年了。他的專業經驗包括Access ADPs、微軟SQL 2000、MySQL和.NET。