我正在開發一個系統,它從數據庫中選擇問題以生成測試/考試。使用設置參數選擇'隨機'結果
每個問題都有一組'問題類型'('q_type')。我有一個問題數據庫,需要選擇4個問題,每個問題都有不同的'q_type'。
基本的查詢,選擇在此刻4分隨機的問題是:
SELECT * FROM questions ORDER BY RAND() LIMIT 0,4
這顯然沒有考慮到一個事實,即每一個問題應該有一個不同的「q_type」。
我希望能夠做一些事情,遵循這樣的邏輯(我需要的東西填寫方括號中):
SELECT * FROM questions WHERE ['q_type' is DISTINCT] ORDER BY RAND() LIMIT 0,4
我一直在使用GROUP BY「q_type」嘗試過,但它只是給出每個'q_type'的第一個問題,每次都不是這種類型的不同問題。 (我正在處理一個誇張的PHP循環,它只需查詢數據庫4次,每次都更新WHERE'q_type'!= XX]。任何幫助都會很棒,因爲我現在完全陷入困境。
感謝您的幫助!
不錯的問題saulposel,我也在等待通過查詢任何解決方案.. :) – 2010-09-10 10:53:20
對於N = 4,你可能會逃脫4個嵌套的SELECT。選擇第二個問題WHERE q_type!= 1st.q_type,選擇第三個問題WHERE q_type!= 2nd.q_type AND q_type!= 1st.q_type等等。顯然是不可擴展的。 – MSalters 2010-09-10 12:22:36
我同意。由於似乎沒有純粹的mySQL選項,因此您可以像上面提到的那樣執行4個嵌套查詢,或者像Fanis建議的那樣執行mysql_fetch_assoc()循環。這完全是一個表現/規模決定。 – saulposel 2010-09-10 12:34:58