剛好網路上有網友詢問到抽獎的問題,小喵將小喵的方式記錄在此
我需要從資料庫中亂數的撈出10筆購買資料,並且給予1~10的編號依序獲得獎項
剛好網路上有網友詢問到抽獎的問題,小喵將小喵的方式記錄在此
需求是這樣的,有個資料表記錄著消費者購買的資料,要從這些資料中,抽出幸運的10個,分別依序是頭獎1、二獎2、三獎3、四獎4總共10個人,因此我需要從資料庫中亂數的撈出10筆購買資料,並且給予1~10的編號依序獲得獎項
其實這樣的需求只需透過SQL的語法讀區資料即可,假設我存放購買資料的Table名稱是TCustBuy那麼我所需要下的SQL與法如下:
INTO #TTT
FROM TCustBuy
ORDER BY NewId()
SELECT *
FROM #TTT
說明:
NewId():是會產生類似GUID不會重複的並且每次產生都不同的資料,因此Order By NewId()就能夠產生亂數排序的功能
TOP 10:的話就是取出其中的前10筆資料,由於資料已經亂數排序了,所以這樣就能夠每次執行都取出不同的10筆資料
IDENTITY(int,1,1):是產生不重複並依序的數字,但是他必須配合SELECT....INTO的方式使用,因此配合這個特性使用暫存Table的方式就能夠編出1~10的編號
最後使用完Temp Table要記得把Temp Table Drop掉
DROP Table #TT
執行結果如下圖:多執行幾次,每次結果都不同
以下是簽名:
- 歡迎轉貼本站的文章,不過請在貼文主旨上加上【轉貼】,並在文章中附上本篇的超連結與站名【topcat姍舞之間的極度凝聚】,感恩大家的配合。
- 小喵大部分的文章會以小喵熟悉的語言VB.NET撰寫,如果您需要C#的Code,也許您可以試著用線上的工具進行轉換,這裡提供幾個參考
Microsoft MVP Visual Studio and Development Technologies (2005~2019/6) | topcat Blog:http://www.dotblogs.com.tw/topcat |