人们,我正在使用nodejs + angular,当我尝试使用 WHERE NOT EXISTS 进行查询时,程序崩溃并显示语法错误,我不知道为什么。
错误:ER_PARSE_ERROR:您的SQL语法有错误;检查 与您的MySQL服务器版本相对应的手册 在'WHERE NOT EXISTS(SELECT * FROM
disp_aulas
WHERE 第1行的'aula'='E'AND'turno'='0'AN'
如果有更好的方法来完成之后的工作,请告诉我。
我尝试使用 IGNORE ,但是无论如何它都会复制信息……也许我不明白如何使用“不存在的地方”。
router.post('/',(req,res,next)=> {
// FALTA COMPROBAR SI ES ADMIN
var dato = {
aula : req.body.aula,
cantPC : req.body.cantPC,
fechaIni : req.body.fechaIni,
fechaFin : req.body.fechaFin,
turno : req.body.turno,
herramientas : req.body.herramientas,
cbox0 : req.body.cbox0,
cbox1 : req.body.cbox1,
cbox2 : req.body.cbox2,
cbox3 : req.body.cbox3,
cbox4 : req.body.cbox4,
cbox5 : req.body.cbox5
};
var fInicio = new Date(dato.fechaIni);
var fFin = new Date(dato.fechaFin);
var timeDifference = Math.abs(fFin.getTime() - fInicio.getTime());
var differentDays = Math.ceil(timeDifference / (1000*3600*24));
var today = moment(fInicio,"MM-DD-YYYY");
var tango = parseInt(dato.herramientas[0]);
var diseno = parseInt(dato.herramientas[1]);
if(tango != 1) {
tango = 0;
}
if(diseno != 1) {
diseno = 0;
}
var lunes = dato.cbox0;
var martes = dato.cbox1;
var miercoles = dato.cbox2;
var jueves = dato.cbox3;
var viernes = dato.cbox4;
var sabado = dato.cbox5;
if(lunes != 1){
lunes = false;
}
if(martes != 1){
martes = false;
}
if(miercoles != 1){
miercoles = false;
}
if(jueves != 1){
jueves = false;
}
if(viernes != 1){
viernes = false;
}
if(sabado != 1){
sabado = false;
}
console.log(differentDays);
for(let i = 0; i <= differentDays+1; i++) {
var tomorrow = today.add(1,'days');
var fecha = tomorrow.format('YYYY-MM-DD');
// console.log(fecha);
if( tomorrow.day() == 0){
} else if (tomorrow.day() == 1 && lunes){
var dato2 = {
aula : req.body.aula,
cantPC : req.body.cantPC,
fecha : fecha,
tango: tango,
diseno: diseno,
turno : req.body.turno
}
console.log("Imprimo dato2: ", dato2);
var q = "INSERT INTO `disp_aulas` SET ? WHERE NOT EXISTS (SELECT * FROM `disp_aulas` WHERE aula='"+dato2.aula+"' AND turno='"+dato2.turno+"' AND fecha='"+dato2.fecha+"')";
bd.query(q,dato2,(err,row)=> {if(err){throw err;}});
} else if (tomorrow.day() == 2 && martes){
var dato2 = {
aula : req.body.aula,
cantPC : req.body.cantPC,
fecha : fecha,
tango: tango,
diseno: diseno,
turno : req.body.turno
}
console.log("Imprimo dato2: ", dato2);
var q = "INSERT INTO disp_aulas SET ? WHERE NOT EXISTS (SELECT aula, turno, fecha FROM disp_aulas WHERE (aula='"+dato2.aula+"' AND turno='"+dato2.turno+"' AND fecha='"+dato2.fecha+"'))";
bd.query(q,dato2,(err,row)=> {if(err){throw err;}});
} else if(tomorrow.day() == 3 && miercoles){
var dato2 = {
aula : req.body.aula,
cantPC : req.body.cantPC,
fecha : fecha,
tango: tango,
diseno: diseno,
turno : req.body.turno
}
console.log("Imprimo dato2: ", dato2);
var q = "INSERT INTO disp_aulas SET ? WHERE NOT EXISTS (SELECT aula, turno, fecha FROM disp_aulas WHERE (aula='"+dato2.aula+"' AND turno='"+dato2.turno+"' AND fecha='"+dato2.fecha+"'))";
bd.query(q,dato2,(err,row)=> {if(err){throw err;}});
} else if(tomorrow.day() == 4 && jueves){
var dato2 = {
aula : req.body.aula,
cantPC : req.body.cantPC,
fecha : fecha,
tango: tango,
diseno: diseno,
turno : req.body.turno
}
console.log("Imprimo dato2: ", dato2);
var q = "INSERT INTO disp_aulas SET ? WHERE NOT EXISTS (SELECT aula, turno, fecha FROM disp_aulas WHERE (aula='"+dato2.aula+"' AND turno='"+dato2.turno+"' AND fecha='"+dato2.fecha+"'))";
bd.query(q,dato2,(err,row)=> {if(err){throw err;}});
} else if(tomorrow.day() == 5 && viernes){
var dato2 = {
aula : req.body.aula,
cantPC : req.body.cantPC,
fecha : fecha,
tango: tango,
diseno: diseno,
turno : req.body.turno
}
console.log("Imprimo dato2: ", dato2);
var q = "INSERT INTO disp_aulas SET ? WHERE NOT EXISTS (SELECT aula, turno, fecha FROM disp_aulas WHERE (aula='"+dato2.aula+"' AND turno='"+dato2.turno+"' AND fecha='"+dato2.fecha+"'))";
bd.query(q,dato2,(err,row)=> {if(err){throw err;}});
} else if(tomorrow.day() == 6 && sabado){
var dato2 = {
aula : req.body.aula,
cantPC : req.body.cantPC,
fecha : fecha,
tango: tango,
diseno: diseno,
turno : req.body.turno
}
console.log("Imprimo dato2: ", dato2);
var q = "INSERT INTO disp_aulas SET ? WHERE NOT EXISTS (SELECT aula, turno, fecha FROM disp_aulas WHERE (aula='"+dato2.aula+"' AND turno='"+dato2.turno+"' AND fecha='"+dato2.fecha+"'))";
bd.query(q,dato2,(err,row)=> {if(err){throw err;}});
}
// console.log(i);
}
res.status(200).send([{id:1}]);
});
我希望程序仅在尚未插入表的情况下才能插入。