php - 如果表中不存在ID,则在表中插入多条记录

标签 php mysql codeigniter

如果表中不存在员工 ID,我想在单个表中为多个员工添加多条记录。我有数组中的员工 ID。

Array ( [0] => Array ( [EmployeeID] => 1 ) [1] => Array ( [EmployeeID] => 2 ) )

现在我有一个表,我想在其中检查是否存在员工的记录然后不插入如果某些员工的记录不存在然后进行插入。

e-g​​ 我有 table 。

INSERT INTO timesheet (employee_id,date_created) Values (1,2014-12-20),(2,2014-12-20) where employee_id NOT IN (1,2)

我知道我写的上述查询是不正确的,但这就是为什么我想问如何仅在该特定 ID 的记录不存在时才插入到表中。

我正在使用 codeigniter,如果您也知道 codeigniter 的方式,那就太好了。但是简单的 mysql 查询帮助也可以为我工作。

最佳答案

尝试使用NOT EXIST像这样的子句:

INSERT INTO timesheet (employee_id,date_created) 
select 1,'2014-12-20'
from dual
WHERE NOT EXISTS (
   SELECT * 
   FROM timesheet 
   WHERE employee_id in (1)
);

对于多行,您必须如下添加虚拟行(或者只在循环中执行之前的语句)

INSERT INTO timesheet (employee_id,date_created) 
select * from (
    select 1 AS ID,'2014-12-20'
    union all 
    select 2 AS ID, '2014-12-20'
    union all 
    select 3 AS ID, '2014-12-20'
) t
WHERE NOT EXISTS (
   SELECT * 
   FROM timesheet 
   WHERE employee_id = t.ID
);

Demo Fiddle

感谢Spock更正! :)

关于php - 如果表中不存在ID,则在表中插入多条记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27578262/

相关文章:

带小数到数字的 PHP 字符串

php - 具有 rtl 和 ltr 方向的多语言站点

MySQL : Why is comparing primary key to a randomly generated number not using the index?

javascript - 返回值显示为字符串而不是 json

php - Laravel Faker 工厂关系

php - 简单的 PHP : getting variable from a form input

mysql - 编写 PHP Mysql 查询

mysql - 如何连接多个表,确保将较小的表扩展到较大的表

php - 将全名概括为简称。

php - 如何在库类中访问数据库?