在codeigniter中“插入...不在哪里”的语法

时间:2011-11-29 11:27:26

标签: mysql codeigniter

我有一个包含4个字段的表格:field1field2field3field4我希望插入不存在的寄存器(field1并且field2field3)存在。

我的疑问是:

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)

我想要两件事:

  1. 知道为什么此查询出现下一个错误:

      

    #1064 - 您的SQL语法出错;查看与您的MySQL服务器版本相对应的手册,以便在'WHERE`id_est`和`id_course`附近使用正确的语法,并且不在(选择`id_estudiante`,'在第1行

  2. 如何根据CodeIgniter语法转换此查询?

    $data =array(
    )
    $this->db->insert('mytable', $data);
    $this->db->where_is_not();
    
  3. 感谢。字段id_estid_course以及date是关键,我不会重复。

    澄清:我需要在mytable中插入包含下列字段的数据:id_estid_coursedatenro。我需要id_estid_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)
    

3 个答案:

答案 0 :(得分:0)

1)移除'id_estid_coursedate周围的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的语法中。