請參考以下的範例程式碼:
USE Northwind GO -- 回傳有 91 筆客戶資料 SELECT COUNT(*) N'資料列筆數' FROM Northwind.dbo.Customers --EX1. 以隨機、亂數的排序方式,顯示全部的客戶資料 SELECT CustomerID, Phone FROM Northwind.dbo.Customers ORDER BY NEWID() SELECT NEWID() N'rowid', CustomerID, Phone FROM Northwind.dbo.Customers ORDER BY rowid GO
--EX2. 以隨機、亂數方式,抽取 5 筆客戶的資料列 SELECT TOP 5 CustomerID, Phone FROM Northwind.dbo.Customers ORDER BY NEWID() SELECT TOP 5 NEWID() N'rowid', CustomerID, Phone FROM Northwind.dbo.Customers ORDER BY rowid; GO
--EX3. 以隨機、亂數方式,抽取 5 筆客戶的資料列,並加入排名編號 DECLARE @tbTOP5 TABLE (rid INT IDENTITY(1,1), CustomerID nchar(5), Phone nvarchar(24)) INSERT @tbTOP5 SELECT TOP (5) CustomerID, Phone FROM Northwind.dbo.Customers ORDER BY NEWID() SELECT * FROM @tbTOP5 GO
--EX4. 以隨機、亂數方式,抽取 N 筆客戶的資料列,並加入排名編號,以使用預存程序為例 IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[randomNCustomer1]') AND type in (N'P', N'PC')) DROP PROCEDURE [dbo].[randomNCustomer1] GO CREATE PROCEDURE randomNCustomer1 @cnt INT AS DECLARE @tbTOP5 TABLE (rid INT IDENTITY(1,1), CustomerID nchar(5), Phone nvarchar(24)) INSERT @tbTOP5 SELECT TOP (@cnt) CustomerID, Phone FROM Northwind.dbo.Customers ORDER BY NEWID() SELECT * FROM @tbTOP5 GO -- 執行此預存程序,隨機、亂數查詢 N 筆客戶的資料列,例如:N = 10 EXEC dbo.randomNCustomer1 10
認識 NEWID() 函數
NEWID() 函數會產生 uniqueidentifier 資料類型的唯一資料。
uniqueidentifier 資料類型中儲存做為全域唯一識別碼 (GUID) 使用的 16 位元組二進位值。
GUID 是一種唯一的二進位數字;全世界的電腦都不會產生重複的 GUID 值。
GUID 的主要用途是在有許多站台與許多電腦的網路上指派一個唯一識別碼。
Transact-SQL 函數、應用程式 API 函數及方法會根據網路卡的識別碼加上從 CPU 時鐘取得的唯一數字產生 uniqueidentifier 新值。
每片網路卡都有唯一的識別碼。
NEWID 傳回的 uniqueidentifier 值是使用伺服器上的網路卡所產生的。
應用程式 API 函數與方法傳回的 uniqueidentifier 值是使用用戶端上的網路卡所產生的。
參考資料:
認識 TABLESAMPLE 子句;快速從大型資料表傳回取樣的資料列
http://sharedderrick.blogspot.com/2011/04/tablesample.html
對 uniqueidentifier 資料類型的資料行,設定其「預設值(Default)」為 0,也就是 00000000-0000-0000-0000-000000000000
http://sharedderrick.blogspot.com/2011/01/uniqueidentifier-default-0-00000000.html
NEWID (Transact-SQL)
http://technet.microsoft.com/zh-tw/library/ms190348.aspx
使用 Uniqueidentifier 資料
http://msdn.microsoft.com/zh-tw/library/ms190215.aspx
uniqueidentifier (Transact-SQL)
http://msdn.microsoft.com/zh-tw/library/ms187942.aspx
沒有留言:
張貼留言