1

質問に回答した 100 人のユーザーのプールがあります。それらのユーザーの約 10% だけが正しい答えを選択します。

私は、間違って答えた 90% ごとに、ユーザー名と間違った答えを入力して、新しいテーブルを作成したいと考えています。

それを行う最善の方法は何ですか?

最初に間違った回答を入力したユーザー名の配列を作成してから、foreach反復ごとに INSERT MySQL を使用してループを実行する必要がありますか?

または、「正しく答えていないすべての人に適用する」というアプローチを取得するMySQLの方法はありますか?

どうもありがとう。よろしく

4

4 に答える 4

3

多くの単一の挿入を行うための最も速くて簡単な方法は次のとおりです。

INSERT DELAYED
于 2012-04-30T22:04:50.190 に答える
2

次のように、すべてのユーザーと回答を格納するテーブルがあるとします。

Table : all_answers

  user_id  |  answer
    joe         a
    mary        b
    john        c

正解は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 に答える
2

次のように、複数挿入 SQL クエリを使用します。

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

これにより、1 つのクエリで必要な数の行を挿入できます。

于 2012-04-30T22:04:36.150 に答える
0
insert into new_table
select (username from old_table where got_it_wrong = 1 )
于 2012-04-30T22:04:23.390 に答える