我有一个包含4个字段的表格:field1
,field2
,field3
,field4
我希望插入不存在的寄存器(field1
并且field2
和field3
)存在。
我的疑问是:
INSERT INTO mytable (`id_est`, `id_course`, `date`,`nro`)
VALUES ('5','7','2020-06-11','')
where id_est and id_course
and date not in (select id_est, id_course, date from mytable)
我想要两件事:
知道为什么此查询出现下一个错误:
#1064 - 您的SQL语法出错;查看与您的MySQL服务器版本相对应的手册,以便在'WHERE`id_est`和`id_course`附近使用正确的语法,并且不在(选择`id_estudiante`,'在第1行
如何根据CodeIgniter语法转换此查询?
$data =array(
)
$this->db->insert('mytable', $data);
$this->db->where_is_not();
感谢。字段id_est
和id_course
以及date
是关键,我不会重复。
澄清:我需要在mytable
中插入包含下列字段的数据:id_est
,id_course
,date
和nro
。我需要id_est
和id_course
以及date
(所有这三个字段都是唯一的),例如:
id_est id_course date nro
1 1 date1 1
1 1 date2 3
1 1 date2 2 (this register is not insert because id_est=1 and id_course=1 and date2 is in my table)
答案 0 :(得分:0)
1)移除'
,id_est
,id_course
和date
周围的nro
。
2)$data = array('id_est'=>'5','id_course'=>'7','date'=>'2020-06-11','nro'=>'');
答案 1 :(得分:0)
试试这个:
INSERT INTO mytable (`id_est`, `id_course`, `date`, `nro`)
SELECT '5','7','2020-06-11',''
WHERE NOT EXISTS (SELECT * FROM mytable
where id_est = '5'
and id_course = '7'
and date = '2020-06-11')
我不知道代码点火器,但是你应该能够在查询工作后将其转换为
答案 2 :(得分:0)
INSERT INTO mytable (`id_est`, `id_course`, `date`, `nro`)
select '5','7','2020-06-11',""
from dual
where NOT EXISTs (select nro from estudiante_curso_fallas where id_est =5 and id_course = 7 and date = '2020-06-11')
错误#1064 - 您的SQL语法出错;查看与您的MySQL服务器版本对应的手册,以便在'WHERE NOT EXISTS附近使用正确的语法(SELECT * FROM mytable where id_est = 5
是因为我没有使用双。从dual开始是必要的,因为查询和子查询在同一个表中。
感谢大家的帮助。我将搜索如何将此查询放在codeigniter的语法中。