2010-06-16 78 views
9

我想打一个INSERT INTO 2个表Mysql的插入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`); 

我不知道它是否可能

回答

10

这是不可能的一个查询作为INSERT只能将数据插入到MySQL中的一个表。您可以

  1. 写这两个查询,并执行它们作为一批
  2. 创建一个能够执行存储过程的两个插入命令

你可以用这些刀片的交易,如果你需要确保两个查询都会写入数据。

7

看起来你正试图解决的问题是从“访问”行中插入“注册”的自动增量值。我对吗?

如果是这样,你可以只使用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()); 
-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 
+1

这是MySQL的语法?在MySQL 5.5中,我收到了语法错误。 – rustyx 2014-04-11 13:56:39

+1

语法错误由WHERE在错误的地方引起,在ORDER BY之前有一个不必要的AND。这段代码涉及到这个问题,但并没有真正回答它。它在逻辑和句法上似乎也是无效的。 – 2014-12-19 14:33:30

0

你总是可以做这样的事情

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