2013-09-05 77 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

相关问题