1
我正在嘗試編寫一個將返回問題及其相應答案的sql語句。在下面的例子中,我對subject_id
進行了硬編碼,但它會動態設置。受組數據限制
我想限制結果只有5個問題,但如果我只是添加LIMIT 5
它將整個數據限制爲只返回5,這不是我想要的。
SELECT q.id,q.question,a.question_id,a.answer, a.correct
FROM questions q
JOIN answers a ON q.id = a.question_id
WHERE q.subject_id = 18
GROUP BY q.id,a.id
我也想達到別的東西,但我不知道是否會更好地實現它的商業邏輯(PHP)。我想爲每個問題(acorrect = 1)加上一個隨機的3個不正確的答案(correct = 0)返回正確的答案。
感謝您的快速響應。該解決方案工作正常,除了它總是返回相同的5個問題(前5個)。我需要每次都返回隨機的。從閱讀RAND函數來看,這將是一個相當緩慢的解決方案,因爲數據庫將有超過10K個問題。是否有更有效的解決方案可以限制問題並每次返回隨機問題? – SteveF 2012-04-17 01:07:31
也許這個程序化的解決方案會更好。你怎麼看? http://www.electrictoolbox.com/msyql-alternative-order-by-rand/ – SteveF 2012-04-17 01:12:14
10k不是很多行(尤其是因爲您將首先通過'subject_id'進行過濾)。你可能想嘗試一下,看看它真的有多慢。如果你想真正快速的隨機化,你可以用這樣的解決方案生成隨機ID的客戶端:http://www.dasprids.de/blog/2008/06/07/fetching-random-rows-of-mysql-有效率的。也請看看這裏:http://stackoverflow.com/questions/2707717/how-do-i-select-a-random-record-efficiently-in-mysql – mellamokb 2012-04-17 01:12:56