如何从数组中查找mysql表中的缺失值

时间:2015-08-20 01:33:53

标签: php mysql arrays

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

类似的东西:

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

然后,我有这个数组

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

此数组将用于在具有FK的另一个表中插入值,因此如果任何值不是第一个表上的ID,则INSERT查询将生效。

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

2 个答案:

答案 0 :(得分:0)

我建议采用以下程序:

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

第二步和第三步可以在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

答案 1 :(得分:0)

试一试。在服务器上测试,产品是新表,只插入项目表中数组中的行。

INSERT INTO  `products` (  `name` ) 
SELECT  `name` FROM  `items` WHERE  `vendor_id` IN ( 1,2,3,4,.... )