2013-03-20 15 views
0

我有2個測驗表:「問題」和「答案」。每個問題有4個答案。我想要求50個隨機問題。我嘗試這個,但它返回的問題少於50個。在LEFT JOIN查詢中請求隨機行

(我需要所有50個問題的所有領域和200個答案)。

SELECT Q.*, A.* FROM questions Q 
LEFT JOIN answers A ON Q.pid = A.pid 
WHERE Q.pid >= RAND() * (SELECT MAX(pid) FROM questions) 
AND Q.lid IN $array 
GROUP BY Q.pid 
LIMIT 50 

回答

1

嘗試以下操作:

SELECT y.* 
    FROM 
     (SELECT * 
      FROM questions 
     ORDER 
      BY RAND() LIMIT 2 
    ) x 
    JOIN answers y 
    ON y.question_id = x.question_id 
    ORDER 
    BY x.question_id; 
+0

我在這個網站是RAND()是緩慢的閱讀,它的更好WHERE ID> = RAND()*(SELECT MAX(ID)FROM表)。在這種情況下是必要的嗎? – 2013-03-20 15:26:17