MYSQL inner join insert 多张表

标签 mysql database inner-join

你好,我会给你们一个数据库表的例子,这些表很麻烦,所以我有 3 个连接表是的,试图将列表放入数据库中,无论如何,我在为其编写插入查询时遇到了麻烦

vogelsoort

id|naam|idhooftoonder|

现在 idhoofdtoonder 引用连接表的 id 来将列表转换为 mysql 数据库(表的逻辑将在下面添加)

hoofdtoonder
|pkey|Id|idondersoorten

现在 idhoofdtoonder 引用下表它的 id

ondersoort
id|naam

很抱歉问这个问题,我对 mysql 的经验还不够

编辑:问题是因为我已经尝试了一个简单的插入查询,它覆盖了我正在寻找帮助的现有数据,而不是覆盖现有的 id 和连接,因为(idhootoonder 引用 hooftonder(id) 和 hooftoonder idontersoorten对 ondersoort(id) 的引用,但并非 ondersoort 中的所有数据都连接到同一个 vogelsoort,我需要一个不覆盖现有连接的插入查询

最佳答案

您需要 3 个插入语句,每个表一个。
您可以使用 TRANSACTION 安全地进行操作。
您需要使用 LAST_INSERT_ID() 函数(为此您的 PK 字段必须是 auto_increment),文档:http://dev.mysql.com/doc/refman/5.7/en/information-functions.html#function_last-insert-id

START TRANSACTION;   

INSERT INTO ondersoort (id, naam) VALUES (NULL, 'data');  
INSERT INTO hoofdtoonder (pkey, Id, idondersoorten) VALUES (NULL, NULL, LAST_INSERT_ID());
INSERT INTO vogelsoort (id, naam, idhooftoonder) VALUES (NULL, 'data', LAST_INSERT_ID());

COMMIT;

关于MYSQL inner join insert 多张表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41742664/

相关文章:

mysql - 如何在不关闭groovy Sql连接的情况下切换数据库

mysql - 仅选择第二个表中不存在的记录

php - 使用 jQuery 和 SQL 从表中删除数据

mysql - 如何计算 1 :N:N relation in a faster way? 中的行数

sql - 更新数据库失败,因为数据库是只读的

Mysql查询,范围内的最大值和最小值没有得到正确的输出

php - 每个类别的帖子限制 10 条记录

mysql - 在 MongoDB 中获取 RECORD 数组

php - 所有项目中只有一个 mysql 连接

database - 数据库中表和列的命名约定