以前寫抽獎程式時 ,用了很笨的方式, 把所有的資料撈出來, 然後, 再用 PHP 的 RAND 函數去抽取資料.
其實, 根本不要這麼麻煩, 因為, 這些動作, 在 SQL 語法就可以輕鬆達成.
如何做?
寫一行SQL
比如:
SELECT * FROM PDITEM WHERE TYPE="CARTON"
列出所有的產品類別為 "卡通(CARTON)" 的記錄
如果要亂數呈現, 則在使用的SQL語法末端, 加上 ORDER 排序法.
一般知道使用 ORDER BY ASC, DESC 升與降 根據某個欄位的值做排序,
但是 ,它還可以用 RAND 作亂數排序.
就這樣 ,輕鬆的可以亂數撈出資料. 寫抽獎名單時 ,就不要再用笨方法了 !!
當然...除非你想寫一個作弊的抽獎程式 把得獎名單灌給自己...
參考語法:
SELECT * FROM PDITEM WHERE TYPE="CARTON" ORDER RAND(NOW());
以當前時間為亂數的排序條件, 就可以亂數取得資料庫的記錄了 !!
更多語法範例:
Select a random row with MySQL:
SELECT column FROM table ORDER BY RAND() LIMIT 1
Select a random row with PostgreSQL:
SELECT column FROM table ORDER BY RANDOM() LIMIT 1
Select a random row with Microsoft SQL Server:
SELECT TOP 1 column FROM table ORDER BY NEWID()
Select a random row with IBM DB2
SELECT column, RAND() as IDX FROM table ORDER BY IDX FETCH FIRST 1 ROWS ONLY
Select a random record with Oracle:
SELECT column FROM ( SELECT column FROM table ORDER BY dbms_random.value ) WHERE rownum = 1
全站熱搜