2010-06-16 120 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)