Mysql插入2个表

时间:2010-06-16 13:23:29

标签: mysql insert

我想插入2个表

访问:

visit_id int | card_id int

注册:

registration_id int | type enum('in','out') | timestamp int | visit_id  int

我想要类似的东西:

INSERT INTO `visits` as v ,`registration` as v
(v.`visit_id`,v.`card_id`,r.`registration_id`, r.`type`, r.`timestamp`, r.`visit_id`) 
VALUES (NULL, 12131141,NULL, UNIX_TIMESTAMP(), v.`visit_id`);

我想知道它是否可能

4 个答案:

答案 0 :(得分:11)

一个查询是不可能的,因为INSERT只能将数据插入mysql中的一个表。你可以

  1. 将其写为两个查询并以批处理方式执行
  2. 创建一个执行两个插入命令
  3. 的存储过程

    如果需要确保两个查询都将写入数据,则可以将这些插入包装在事务中。

答案 1 :(得分:8)

您尝试解决的问题似乎是从“访问”行获取自动增量值以插入“注册”。我是对的吗?

如果是这样,您可以像这样使用LAST_INSERT_ID()函数:

INSERT INTO `visits` (`visit_id`,`card_id`) 
VALUES (NULL, 12131141);
INSERT INTO `registration` (`registration_id`, `type`, `timestamp`, `visit_id`) 
VALUES (NULL, 'in', UNIX_TIMESTAMP(), LAST_INSERT_ID());

答案 2 :(得分:0)

你可以随时做这样的事情

INSERT IGNORE INTO `table2` VALUES ((select id from table1 where col="value"), 3, 4, 5)

答案 3 :(得分:-1)

INSERT INTO designation as de,
                department as da,
                    profile as pr

                                  (designation_name,
                                   depart_id,
                                   id,
                                   username,
                                   department,
                                   designation)


      select de.designation_name,
             de.depart_id,da.id,
             pr.username,
             pr.department,
             pr.designation 
       from 
              designation,
              department,
              profile

          de.designation_name='project manager' AND de.id='1'         OR
          de.depart_id='2' AND de.id='2'                              OR  
          da.id='2'                                                   OR  
          pr.username='kapil.purohit' AND pr.id='9' AND pr.status='1' OR 
          pr.department='1' AND pr.id='9'                             OR  
          pr.designation='3' AND pr.id='9' AND pr.status='1'

       WHERE               
               de.id    =   da.id   AND
                   da.id    =   pr.id   AND
                   de.id    =   pr.id   AND
                                    ORDER BY de.id DESC