我想插入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`);
我想知道它是否可能
答案 0 :(得分:11)
一个查询是不可能的,因为INSERT
只能将数据插入mysql中的一个表。你可以
如果需要确保两个查询都将写入数据,则可以将这些插入包装在事务中。
答案 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