2013-09-05 110 views
1

我想從MySql表中抽取10個隨機記錄(問題)並將它們插入到另一個表(活動)中,但只記錄不在第二個表(活動)中的記錄。 如果第二個表格不是空的,我的代碼有效,但如果表格爲空,則根本不會給出任何結果。任何人都可以看到爲什麼,我能做些什麼嗎?隨機插入到第二個表

INSERT INTO active (quesindex) 
(
SELECT DISTINCT(questions.quesindex) 
FROM questions, (
     SELECT questions.quesindex AS sid 
     FROM questions, active 
where questions.quesindex NOT IN (SELECT active.quesindex FROM active) 
     ORDER BY RAND() 
     LIMIT 10 
    ) tmp 
WHERE questions.quesindex = tmp.sid 
) 

回答

0

你正在做不必要的交叉加入questionsactive表之間。該查詢應該做你想要什麼:

INSERT INTO active (quesindex) 
    SELECT q.quesindex AS sid 
    FROM questions q 
    where q.quesindex NOT IN (SELECT a.quesindex FROM active a) 
    ORDER BY RAND() 
    LIMIT 10; 

這是另一種版本,使用left outer join

INSERT INTO active (quesindex) 
    SELECT q.quesindex AS sid 
    FROM questions q left outer join 
     active a 
     on q.quesindex = a.quesindex 
    WHERE a.quesindex is null 
    ORDER BY RAND() 
    LIMIT 10; 

這後一個版本會的工作,例如,當有acive.quesindexNULL值。

+0

優秀的戈登,這很好。非常感謝。傑米。 – user2751734

相關問題