Вставка нескольких записей в MYSQL и Node.js с предложением where
Я пытаюсь вставить несколько записей в MYSQL из Node.js с предложением WHERE, но получаю синтаксическую ошибку.
Оператор работает нормально, пока я не попытаюсь добавить к нему условный оператор. Тогда я получаю эту ошибку: ER_PARSE_ERROR: у вас есть ошибка в вашем синтаксисе SQL около VALUES? ГДЕ...
var Data = data; // this is a nested array already as received from client side like [[..],[..],[..]]
var ID = 123;
var sql = "INSERT INTO table1 (Col1,Col2,Col3,Col4,Col5) VALUES ? WHERE"+ID+" NOT IN (SELECT somecol FROM table2 WHERE somecol= "+ID+")"
connection.query(sql, [Data], function (error, result) {
if (error) {
throw error;
res.json({ Message: "Oops something went wrong :("});
}
res.json({ Message: "Your data was added!"});
});
Соединение настроено для разрешения нескольких операторов уже:
var connection = mysql.createConnection({
host: 'localhost',
user: 'root',
password: '1234',
database: 'thedb',
port: 12345,
charset: "utf8mb4",
multipleStatements: true
});
Запрос работает в этой форме без предложения WHERE:
var Data = data; // this is a nested array already as received from client side like [[..],[..],[..]]
var ID = 123;
var sql = "INSERT INTO table1 (Col1,Col2,Col3,Col4,Col5) VALUES ?"
connection.query(sql, [Data], function (error, result) {
if (error) {
throw error;
res.json({ Message: "Oops something went wrong :("});
}
res.json({ Message: "Your data was added!"});
});
Как заставить запрос работать с предложением WHERE?
1 ответ
Insert
команда не будет работать с Where
предложение, потому что вы вставляете новую строку. Наивно говоря, Where
Предложение нуждается в нескольких строках для фильтрации в зависимости от условий. В зависимости от вашего варианта использования у вас может быть два возможных решения:
использование
Update
заявления, которые могут быть похожиUpdate table set col1=val1 where (condition clause)
Если вы действительно хотите использовать
Where
пункт, то вы можете использоватьInsert
команда в следующем виде
Insert into table(col1,col2)
Select (val1, val2) from table2 where (condition clause);