php - 仅当另一个表中的 id 存在时才插入行

标签 php mysql

我的程序得到一个 ID 列表,其中一些在我们的系统中,一些不在。目标是为我们系统中存在的 ID 在表中输入一个条目,但忽略那些不存在的 ID。

例子:

Incomming    My System    Inserted
555          583          583
583
599

我最初的想法是使用 INSERT IGNORE 但是要检查的 ID 列表在用户表中,并且行被插入到事件表中。我还尝试了一个外键约束,但是 INSERT IGNORE 并没有使用 FK 静默失败 - 它会产生一个错误,该错误会终止所有后续插入。

我目前的攻击角度是将用户表中的所有 ID 读入 PHP,并在尝试插入之前检查 PHP 中的 ID,但这似乎不是最佳选择。有 MySQL 的方法吗?

最佳答案

INSERT INTO your_id_table (ID) 
SELECT ID FROM my_system_table WHERE ID IN (list_of_ids)

我希望它很清楚,有了这个你根本不需要做任何检查,你只需运行查询并完成它。

关于php - 仅当另一个表中的 id 存在时才插入行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7854274/

相关文章:

php - 如何在特定时间(10秒)在php中自动显示下一页?

php - $_POST[] 保存数组...帮助

php - Openfire:存档消息 NULL 参与者

mysql - 没有AI(Auto_Increment)的表PK?使用文字PK代替

MYSQL导入: Cannot get geometry object from data you send to the GEOMETRY field

php - 如何获取json android中返回的多行并将其传递给sqlite

javascript - 根据用户ID隐藏div?

mysql - 如何在Mysql If子句中使用用户变量?

mysql - SQL:按组选择行,直到满足条件

sql - 检查一个值是否存在然后在 Sql 中更新或插入的最有效方法是什么