SQL 隨機取資料【不重複】

  • 7153
  • 0

從資料中抽出幸運的10個人,分別依序頒發頭獎 * 1位、二獎 * 2位、三獎 * 3位、四獎 * 4位,總共10個人。

需求

 

從資料中抽出幸運的10個人,分別依序頒發頭獎 1位、二獎 2位、三獎 3位、四獎 4位,總共10個人。

概念

從資料庫中亂數的撈出10筆資料,並將1~10編號依序獲得獎項

在使用SQL將資料撈出時,就能限制條件,只撈出這些資料。

做法

SELECT  TOP 10 IDENTITY(int,1,1) as user_seq, *
INTO #result
FROM user
ORDER BY NewId()

SELECT *
FROM #TTT

說明

SELECT *
INTO #result
result     是建立一個虛擬Table,暫時將資料存放於此,然後再從result撈資料出來。 
user    是顧客Table
user_seq   是顧客Table的序號欄位
‧‧IDENTITY(int,1,1)   產生不重複並依序的數字,必須配合SELECT .. INTO 使用
Order By NewID()   能產生亂數排序
 
最後記得要清空暫存
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
DROP Table #result

還看到另一種方法:

TOP 10  * 

FROM Temp 

SELECT DISTINCT user_seq  FROM user 

) AS result

Order by newid()