1

我有 100 个回答过问题的用户。只有大约 10% 的用户会选择正确的答案。

我想创建一个新表,其中 90% 回答错误的每一个人都有一行,其中包含他们的用户名和他们提供的错误答案。

最好的方法是什么?

我是否应该首先创建一个输入错误答案的用户名数组,然后执行一个foreach循环,每次迭代都有一个 INSERT MySQL?

或者是否有一种 MySQL 方法可以让方法“适用于所有回答不正确的人”?

非常感谢。问候

4

4 回答 4

3

进行大量单次插入的最快和最简单的方法是:

INSERT DELAYED
于 2012-04-30T22:04:50.190 回答
2

使用多插入 SQL 查询,如下所示:

INSERT INTO table1 (col1, col2) VALUES (1, 2), (6, 9), (7, 8)

这将允许您在单个查询中插入所需的行数。

于 2012-04-30T22:04:36.150 回答
2

假设您有一个存储所有用户和答案的表,如下所示:

Table : all_answers

  user_id  |  answer
    joe         a
    mary        b
    john        c

正确答案是 a c,你可以有一个类似的表(相同的模式)叫做wrong_answers,然后像这样填充它:

 INSERT INTO wrong_answers 
        SELECT user_id, answer FROM all_answers WHERE answer <> `c`

您还可以创建一个触发器来为您执行此操作,或者创建一个视图。

如果您存储了其他值wrong_answers(例如主键),则需要指示wrong_answers要填充哪些值,如下所示:

INSERT INTO wrong_answers (user,answer)
    SELECT user, answer FROM answers
    WHERE answer <> 'c';
于 2012-04-30T22:09:36.383 回答
0
insert into new_table
select (username from old_table where got_it_wrong = 1 )
于 2012-04-30T22:04:23.390 回答