2014-05-03 37 views
-1

我試圖創建一個保存我的問題,用戶的答案等所有信息的數據庫顯示一個隨機的MySQL行,但不一樣的兩次

我一直在思考一整天如何解決這個我的問題。 Okey,所以問題是這樣的: 假設我在我的數據庫中有一個表格,其中有問題(300 ++),登錄的用戶將得到一個隨機顯示的問題。但是再也不會有同樣的問題,所以我需要將這些信息存儲在帶有用戶ID和問題ID的單獨表格中。我需要創建另一個表來存儲問題的答案。

那麼這個PHP/MYSQL代碼是怎麼樣的呢?因爲我需要找到一個沒有再向同一個用戶顯示的隨機問題。

如果有什麼不清楚的地方,請告訴我。而在此先感謝

+2

爲什麼要downvote?找不到任何重複或任何答案。 – RubberPoint

+0

我同意你的意見。我認爲他們是不應該的。 – zneak

+0

是的,但是,謝謝;) – RubberPoint

回答

1

可以使用RAND()功能和NOT IN

例子:

SELECT * FROM `questions` WHERE id NOT IN (5, 3) ORDER BY RAND() LIMIT 1; 

你必須使用子查詢

獲取問題ID示例

SELECT * FROM `questions` WHERE id NOT IN (SELECT question_id FROM shown_questions WHERE user_id=1) ORDER BY RAND() LIMIT 1; 
+0

不錯,這會給我很多幫助!我要讀取NOT IN函數。不知道那個! :) – RubberPoint

+0

大型工作集的速度非常慢:對於每一行,您需要測試集合中的每個值。 – zneak

+0

是的,我想。但這可能是最好的方法?爲了實現這個問題。 – RubberPoint

1

你可以使用外部聯接來選擇項目已經沒有使用過了。如果設置索引,它可能比NOT IN快一點:

SELECT questions.* FROM questions 
    LEFT JOIN shown_questions 
     ON (questions.id=show_questions.question AND user_id=42) 
WHERE shown_questions.question IS NULL 
ORDER BY RAND() LIMIT 1; 
+0

不錯,謝謝!我會做一些測試,並比較加載時間:) – RubberPoint

相關問題