将外键插入表

时间:2016-12-03 20:38:58

标签: mysql sql

我有两张桌子。

基本上我想在表格中插入idstring

但是,id是另一个表的外键,其中customerId是主键

此外,我的父表格有name

我拥有的是name和我从网络获取的string。但是,由于我没有在父表格中与id名称匹配的customerid,因此我不知道如何插入它。

到目前为止我得到了这个,顺便说一句,这是我在这个问题上运用我的人性逻辑的愚蠢尝试:

INSERT INTO `PostDb`(`Offer`)
VALUES ("String") AND PostDb.id
WHERE CustomerDb.id = PostDb.id AND CustomerDb.name = "MyNameThatIHave"

虽然会有所作为。是我做了以下几点:

SELECT PostDb.id
FROM `PostDb` JOIN CustomerDb
WHERE `CustomerId` = CustomerDb.id AND CustomerDb.name = "MyNameThatIHave"

然后使用我在这样的新插入命令中获得的id:

INSERT INTO `PostDb`(`CustomerId`, `Offer`) 
VALUES ("THE ID I GOT BEFORE","STRING")

基本上我想在一个查询中实现,两个在陈述的查询之前做了什么

1 个答案:

答案 0 :(得分:0)

您是否尝试过LAST_INSERT_ID()功能,该功能可为您提供最后一次插入的ID PK,前提是IDauto_increment列。

一旦你得到它,你就可以在你的FK列的子表中插入其余的属性。

在这种情况下,使用像

这样的INSERT INTO .. SELECT FROM构造
INSERT INTO `PostDb`(`CustomerId`, `Offer`) 
SELECT PostDb.`CustomerId`, 'Some Value'
FROM `PostDb` JOIN CustomerDb
ON `PostDb`.`CustomerId` = CustomerDb.id 
WHERE CustomerDb.name = "MyNameThatIHave";