我有三个数据表,tableA
,tableB
和tableAB
。内容并不重要,只有tableA
和tableB
有主键,tableAB
与两个表中的键相关。其基本结构如下:
选择从插入到
aId|data
---+----
1 |4
2 |83
bId|data
---+----
1 |a
2 |cd
3 |bf
abId|aId|bId
----+---+---
1 |1 |1
2 |1 |2
3 |2 |3
我希望做的是所有这三个表的插入合并成一个查询,但我不知道怎么样。目前我正在使用的想法在下面,但它不起作用。需要注意的重要事项是aId
可能涉及多个bId
's,但每个bId
将只有一个aId
引用它。因此,aId
可能不是指现有的bId
's。我正在努力的大事情是:1)使insert
的值来自另一个insert
,并且2)在单个查询中模拟多个插入,对于bId
的模拟。
目前查询:
insert into tableAB(aId, bId)
values((select aId from(insert into tableA(data) values(5))),
(select bId from(insert into tableB(data) values("f"))));
我真的不是在单个查询确定多个插入是可能的,不知道上面写着它的一种方式。
MySQL不支持在单个查询中插入多表。 :( – Sevle
你可以在Postgres中做你想做的事情,但是MySQL不支持在单个查询中插入多个表。 –
有一个LAST_INSERT_ID,参见[manual](http://dev.mysql.com/doc/) refman/5.7/en/information-functions.html#function_last-insert-id),样本:http://www.sqlfiddle.com/#!9/a8102/1/0 –