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 ( 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 回答
0

我不确定我是否理解你的问题。您想在同一张表中添加新记录,但将 topic_id 从 545 更改为 547?如果这就是你想要的,那么以下将起作用:

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

一些问题需要进一步澄清:新插入的 question_parent_id 和现有行的 question_id 之间是否存在某种关系?还是新行只是继承 question_id 和 question_parent_id 的旧值?

你说你想要一个“新的”主题 id,但你没有指定它应该是什么。我只是通过向现有行添加 1 来增加主题 ID。如果您想要其他东西,请指定。在您的 PHP 示例中,它似乎应该保持 8。在这种情况下,从我的上述代码中删除 +1。

于 2013-12-26T18:00:58.930 回答