【问题标题】:INSERT multiple rows into a MySQL table with Super/Subtypes将多行插入到具有超级/子类型的 MySQL 表中
【发布时间】:2014-09-09 16:17:44
【问题描述】:
我在 MySQL 中有以下子/超类型排列:
我还有一个 CSV 的行需要进入 rnaseq_voom 表,所以我想将 CSV 加载到一个临时表中,将其加入 bmt_gene 表,然后批量插入超类型rnaseq。
然后我需要插入子类型,但我不能使用SET @LAST = LAST_INSERT_ID();,因为这只会将最后一行插入父表,而不是相关行。
我可以同时插入两个表吗?否则如何将多行插入到超级/子类型关系中。
【问题讨论】:
标签:
mysql
sql
inheritance
【解决方案1】:
如果您的数据中有一组列可以唯一标识您插入的行,您可以这样做:
INSERT INTO rnaseq (columns) SELECT columns FROM temp_table;
INSERT INTO rnaseq_voom (id,more_columns)
SELECT r.id,more_columns FROM rnaseq r JOIN temp_table t USING (key_columns)
其中columns 是要插入到rnaseq 中的列集,more_columns 是要插入到rnaseq_voom 中的列,key_columns 是唯一标识临时表行的列(以查找 id在该行的rnaseq 中。