iT邦幫忙

2018 iT 邦幫忙鐵人賽
DAY 3
0

前言

會接觸到 NEWID() 這個函式,主要在系統功能實作上需要從資料表中隨機取得資料,經過某些處理後,定時從 hangfire 觸發程式再透過 SignalR 提供給前端顯示。因為主要邏輯是從 Stored procedure 撰寫而成,理所當然,隨機取得資料的實作也是寫在 Stored procedure。


介紹

NEWID () 主要隨機建立類型 uniqueidentifier 資料,如下範例所示,每一次產生的 Id 皆不同

註:uniqueidentifier 與 GUID 相同,使用的 16 位元組二進位值,為全球唯一識別碼。

DECLARE @Id uniqueidentifier  
SET @Id = NEWID()  
SELECT @Id

https://d2mxuefqeaa7sj.cloudfront.net/s_DC7CB5025006F3524E170896DABDB30F507ECAF9B6670D55B98A48DCC64F4DD7_1513871685960_image.png

直接 SELECT NEWID()
https://d2mxuefqeaa7sj.cloudfront.net/s_DC7CB5025006F3524E170896DABDB30F507ECAF9B6670D55B98A48DCC64F4DD7_1513873750695_image.png

與前言描述相同,將 NEWID() 使用在 ORDER BY 上,資料表隨機排列資料(以 Study4TW 官網活動資料表為例)

SELECT *
  FROM [dbo].[Activity]
 ORDER BY NEWID()

https://d2mxuefqeaa7sj.cloudfront.net/s_DC7CB5025006F3524E170896DABDB30F507ECAF9B6670D55B98A48DCC64F4DD7_1513871902105_image.png

如果加上 TOP N 語法,就達到目的,隨機取的 N 筆資料

SELECT TOP 3 *
  FROM [dbo].[Activity]
 ORDER BY NEWID()

https://d2mxuefqeaa7sj.cloudfront.net/s_DC7CB5025006F3524E170896DABDB30F507ECAF9B6670D55B98A48DCC64F4DD7_1513872192383_image.png


上一篇
02.SQL Server Management Studio SQL 格式化與排版
下一篇
04.ROW_NUMBER 次序函數與使用
系列文
SQL Server 學習日誌30

1 則留言

0

我要留言

立即登入留言