2013-03-20 50 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