我有一张A桌
| 标识符|字段|
| - -|- -|
| 一个|值A|
| 2个|值B|
| 一个人。|一个人。|
以及参考表A的表B
| 标识符|fk_表格_a|字段_a|字段_b|一个人。|
| - -|- -|- -|- -|- -|
| 一个|一个|一个人。|一个人。|一个人。|
| 2个|2个|一个人。|一个人。|一个人。|
| 一个人。|一个人。|一个人。|一个人。|一个人。|
我想在表B中插入一些内容,前提是它还没有任何引用A的数据集(通过fk_table_a)
不幸的是,外键fk_table_a不是唯一的,我不能改变这个事实,所以它是潜在的可能插入另一个条目与相同的外键。但我不希望在我的情况下。
我使用INSERT INTO... SELECT语句将一大堆行插入到表B中...此语句的select语句的范围稍大一些,但看起来如下所示
INSERT INTO table_b (fk_table_a, field_a, field_b, ...)
SELECT ot1.id_table_a, ot2.field_a, ot3.field_b
FROM other_table_1 ot1,
JOIN other_table_2 ot2 ...
JOIN other_table_3 ot3 ...
....
# only insert the current dataset if it ot1.id_table_a doesnt exist already in table_b!
因此,对于select中的任何数据集,如果已经有一个数据集具有相同的fk_table_a,我不希望在table_b中有一个条目...
有什么想法吗?
1条答案
按热度按时间egmofgnx1#
添加一个WHERE子句来检查other_table_1中是否不存在该id可能会解决问题。