我的程序得到一个 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/