以前寫抽獎程式時 ,用了很笨的方式, 把所有的資料撈出來, 然後, 再用 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

    全站熱搜

    Frank 發表在 痞客邦 留言(0) 人氣()