【问题标题】:how to find the missing values in a mysql table from an array如何从数组中查找mysql表中的缺失值
【发布时间】:2015-08-20 01:33:52
【问题描述】:

我有一个带有 varchar 主键的表,它是其他一些表的外键。

类似:

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

然后,我有这个数组

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

这个数组将用于在另一个表中插入值,因此如果任何值不是第一个表上的 ID,INSERT 查询将停止。

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

【问题讨论】:

  • the INSERT query will brake ...您的 MySQL 引擎运行速度有多快?
  • @TimBiegeleisen 哈哈哈让我开心

标签: php mysql arrays


【解决方案1】:

我会建议以下程序:

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

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

【讨论】:

    【解决方案2】:

    试一试。在服务器上测试,products 是新表,并且只插入了从 items 表的数组中找到的行。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-10-12
      • 2019-12-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-12
      • 2021-06-12
      • 1970-01-01
      相关资源
      最近更新 更多