【问题标题】:Mysql insert into 2 tablesMysql插入2个表
【发布时间】:2010-06-16 13:23:28
【问题描述】:

我想插入两张表

访问次数:

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`);

不知道有没有可能

【问题讨论】:

    标签: mysql insert


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

      看来您要解决的问题是从“访问”行获取自动增量值以插入“注册”。我说的对吗?

      如果是这样,您可以像这样使用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());
      

      【讨论】:

        【解决方案3】:

        你总是可以做这样的事情

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

        【讨论】:

          【解决方案4】:
          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
          

          【讨论】:

          • 这是 MySQL 语法吗?在 MySQL 5.5 中出现语法错误。
          • WHERE 位置错误和 ORDER BY 之前不必要的 AND 导致的语法错误。这段代码与问题有关,但并没有真正具体回答。它在逻辑和句法上似乎也是无效的。
          猜你喜欢
          • 2015-06-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-05-01
          • 1970-01-01
          相关资源
          最近更新 更多