我得到一个人就读的array()
所学校。对于用户sarah@gmail.com
,该数组有3个degree
个已获得的奖励。我的桌子只有3个中的2个。
插入表中尚未出现的Sarah学位的最简单方法是什么?
开始表:
email school degree
d@d.com Yale BA
d@d.com Emery PHD
a@a.com ClownU BS
sarah@gmail.com Harvard BA
sarah@gmail.com Harvard Masters
结束表:
email school degree
d@d.com Yale BA
d@d.com Emery PHD
a@a.com ClownU BS
sarah@gmail.com Harvard BA
sarah@gmail.com Harvard Masters
sarah@gmail.com Harvard PHD
我考虑的选项:
答案 0 :(得分:1)
Insert Into [Start-Table] (email, school, degree)
(
select b.email, b.school, b.degree from [End-Table] b
where NOT EXISTS (Select email, school, degree from [Start-Table]
where email = b.email and school = b.school and degree = b.degree)
)
答案 1 :(得分:0)
我遇到了同样的问题,你和我这样解决了这个问题: 1 - 删除所需用户的所有记录,然后像代码一样插入批处理。
$employer_office = $this->input->post('employer_office');
$emp_job_type = $this->input->post('job_type');
$job_title = $this->input->post('job_title');
$job_appointment_date = $this->input->post('job_appointment_date');
$job_duration = $this->input->post('job_duration');
$job_place = $this->input->post('job_place');
$type_of_relation = $this->input->post('type_of_relation');
$monthly_salary = $this->input->post('monthly_salary');
$remarks = $this->input->post('remarks');
$all_array = array();
if($employer_office)
{
if(is_array($employer_office))
{
for($j=0; $j<count($employer_office); $j++)
{
$form_arr = array(
'employer_office' =>$employer_office[$j],
'job_type' =>$emp_job_type[$j],
'job_title' =>$job_title[$j],
'job_appointment_date' =>change_datei($job_appointment_date[$j]),
'job_duration' =>$job_duration[$j],
'job_place' =>$job_place[$j],
'type_of_relation' =>$type_of_relation[$j],
'monthly_salary' =>$monthly_salary[$j],
'remarks' =>$remarks[$j],
'regdate' =>date('Y-m-d H:m:s'),
'userid' =>$id
);
array_push($all_array, $form_arr);
}
}
}
if($this->history_model->delete_all('ast_jobs_history', $id)==TRUE)
{
if($this->history_model->all_insert('ast_jobs_history', $all_array)==TRUE)
{
$this->session->set_flashdata("msg","<span class='m_success'>".$this->lang->line('global_update_success')."</span>");
redirect('history/home/list_dy','refresh');
}
else
{
$this->session->set_flashdata("msg","<span class='m_error'>".$this->lang->line('global_update_error')."</span>");
redirect('history/home/list_dy','refresh');
}
}
else
{
$this->load->view('unauthorized');
}
并在模型中插入insert_batch。
function all_insert($tbl, $data=array())
{
if(is_array($data))
{
$this->db->trans_start();
$this->db->insert_batch($tbl,$data);
$this->db->trans_complete();
return TRUE;
}
else
{
return FALSE;
}
}
带来一些变化,我希望这会给你一个如何解决问题的提示。
或者如果您不想删除特定ID的记录,也可以进行查询, 根据ID获取数据并使用array_search()或in_array()函数过滤发布的数据并获取要插入的记录,然后将其插入数据库。
答案 2 :(得分:0)
如果要为记录保留相同的ID并不重要,只需删除并重新插入所有数据即可。如果要为旧记录保留相同的ID,也可以删除它,但是您首先要查询数据库以获取ID并使用它们创建数组。然后您可以插入所有新数据。
但如果我是你,我会创建一个查找数据库查找现有记录的函数。如果记录存在,则更新它。如果没有,它会创建一个新的。我认为这是解决这个问题最简洁的方法。