0

データベースに「質問」というテーブルがあります。ご参考までに、テーブル「質問」の構造を以下に示します。

question_id                   bigint(12) AUTO_INCREMENT (Primary Key)
question_parent_id            bigint(12)
question_subject_id           smallint(11)
question_topic_id             int(11)
question_directions           text
question_text                 text
question_file                 varchar(100)
question_description          text
question_difficulty_type      tinyint(4)
question_has_sub_ques         enum('0', '1')
question_picked_individually  enum('no', 'yes')
question_appeared_count       bigint(12)
question_manual               enum('0', '1')
question_site_id              varchar(10)
question_created_staff_id     varchar(32)
question_added_date           bigint(12)
question_updated_staff_id     varchar(32)
question_updated_date         bigint(12)

このテーブルには、何千もの質問が含まれています。今のシナリオは、次のように PHP フォームからいくつかの値を取得しています。

/*Following are the subject id and topic id from which I want to fetch the questions belonging to that subjet id and topic id */    
    $_POST['from_subject_id'] => 8
    $_POST['from_topic_id'] => 545
/*Following are the subject id and topic id to which I want to add the questions fetched in above query*/
    $_POST['to_subject_id'] => 8
    $_POST['to_topic_id'] => 547

そこで、 subject_id と topic_id ( )の最初の 2 つの値に基づいて取得した質問をi.e. based on $_POST['from_subject_id'] and $_POST['from_topic_id']同じテーブルに追加したいと考えています。しかし、これらの新しく挿入された質問はすべて、次のコメントの後に subject_id と topic_id の値を指定する必要があります(i.e. $_POST['to_subject_id'] and $_POST['to_topic_id'])。つまり、同じテーブルで挿入操作と選択操作を同時に実行したいのです。これを達成するために、私は多くのトリックを試し、解決策をグーグルで検索しましたが、完璧な解決策を見つけることができませんでした. 誰でもこの点で私を助けてもらえますか? 次の SQL クエリを試してみましたが、既に持っている件名とトピック ID の値を使用して同じ質問を挿入しています。要するに、質問が繰り返されており、私はその結果を望んでいません。代わりに、新しい subject_id と新しい topic_id を使用して同じ質問を挿入したいと考えています。ご参考までに、以下に SQL クエリを示します。

INSERT INTO questions (question_parent_id, question_subject_id, question_topic_id, question_directions, question_text, question_file, question_description, question_difficulty_type, question_has_sub_ques, question_picked_individually, question_manual, question_site_id, question_created_staff_id, question_added_date, question_appeared_count, question_updated_staff_id, question_updated_date)
SELECT question_parent_id, question_directions, question_text, question_file, question_description, question_difficulty_type, question_has_sub_ques, question_picked_individually, question_manual, question_site_id, question_created_staff_id, question_added_date, question_appeared_count, question_updated_staff_id, question_updated_date
FROM questions
WHERE question_subject_id='8' AND question_topic_id='545'

どうもありがとうございました

4

2 に答える 2

4

必要な値をselectクエリの一部に置き換えます。

INSERT INTO questions (question_parent_id, question_subject_id, question_topic_id, question_directions, question_text, question_file, question_description, question_difficulty_type, question_has_sub_ques, question_picked_individually, question_manual, question_site_id, question_created_staff_id, question_added_date, question_appeared_count, question_updated_staff_id, question_updated_date)
    SELECT question_parent_id,  8, 547,
           question_directions, question_text, question_file,
           question_description, question_difficulty_type, question_has_sub_ques,
           question_picked_individually, question_manual, question_site_id,
           question_created_staff_id, question_added_date, question_appeared_count,
           question_updated_staff_id, question_updated_date
FROM questions
WHERE question_subject_id = '8' AND question_topic_id = '545';

または、次のようにselect始まる場合があります。

select question_parent_id, $_POST['to_subject_id'], $_POST['to_topic_id']
于 2013-12-26T17:33:24.533 に答える