Вставка нескольких записей в MYSQL и Node.js с предложением where - PullRequest
0 голосов
/ 25 ноября 2018

Я пытаюсь вставить несколько записей в MYSQL из Node.js с предложением WHERE, но получаю синтаксическую ошибку.

Оператор работает нормально, пока я не попытаюсь добавить к нему условный оператор.Затем я получаю эту ошибку: ER_PARSE_ERROR: у вас есть ошибка в вашем синтаксисе SQL около VALUES?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 ? 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 Ответ

0 голосов
/ 25 ноября 2018
Команда

Insert не будет работать с предложением Where, потому что вы вставляете новую строку.В наивных терминах предложение Where нуждается в некоторых строках для фильтрации в зависимости от условий.В зависимости от вашего варианта использования у вас может быть два возможных решения:

  1. Использование Update операторов, которые могут быть похожи на Update table set col1=val1 where (condition clause)

  2. Если выдействительно хотите использовать предложение Where, тогда вы можете использовать команду Insert в следующей форме

Insert into table(col1,col2) Select (val1, val2) from table2 where (condition clause);

...