我有一个带有varchar主键的表,这是其他一些表的先行键。

就像是:

ID-------------NAME
1011001020-----product 1
1011001022-----product 2
1011001025-----product 3


然后,我有这个数组

array(
    '1011001020',
    '1011001022',
    '1011001025',
    'x',
    'y'
)


该数组将用于在带有FK的另一个表中插入值,因此,如果第一个表中的值不是ID,则INSERT查询将停止。

在尝试插入之前如何找到“ x”和“ y”。我想避免从表1中选择所有ID并进行PHP比较,因为有很多记录。我宁愿使用MySQL方法

最佳答案

我建议以下过程:


创建表并将所有值插入表中。
删除不匹配的值。
添加外键约束。


第二步和第三步可以在SQL中轻松完成:

delete from temporarytable
    where tt.otherid not in (select ot.otherid from othertable ot);

alter table temporarytable
    add constraint fk_othertable foreign key (otherid) references othertable(otherid);


您可以根据需要加载数据。为了提高速度,我建议使用load data infile

10-04 15:39