如果表中尚不存在员工ID,我想在多个员工的单个表中添加多个记录。我有数组中的员工ID。
Array ( [0] => Array ( [EmployeeID] => 1 ) [1] => Array ( [EmployeeID] => 2 ) )
现在我有一张表格,我想检查一下如果员工记录存在,那么如果某个员工的记录不存在则不要插入,然后插入。
是的,我有桌子。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
查询帮助也适用于我。
答案 0 :(得分:1)
尝试使用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
);
感谢Spock进行更正! :)
答案 1 :(得分:1)
首先确保employee_id是主键和/或唯一索引。然后,您可以使用ON DUPLICATE KEY UPDATE
答案 2 :(得分:1)
$data=Array ( Array ( 'EmployeeID' => 1 ),Array ( 'EmployeeID' => 2 ) );
echo '<pre>';
print_r($data);
foreach ($data as $key => $value) {
echo $str="INSERT INTO timesheet (employee_id,date_created) Values (1,2014-12-20),(2,2014-12-20) where employee_id NOT IN ($key)";
echo '<br>';
}