首页 > 解决方案 > 通过具有多个占位符和 SELECT 的 NodeJS 批量插入到 MYSQL

问题描述

我无法让以下工作正常进行。任何帮助将不胜感激

var values = [
        ['Product1', 1, 1],
        ['Product2', 1, 1],
    ];

    dbConn.query(
        'INSERT INTO tblQuoteItems (ProductIDFK,QuoteIDFK,CustomerIDFK) VALUES ((SELECT ProductIDPK FROM tblProducts WHERE ProductName=?),?,?)',
        [values],
        function (err, res) {
            if (err) {
                
                result(null, err);
            } else {
                
                result(null, res);
            }
        }
    );

错误响应表明它将所有数组转储到第一个占位符而不是每个占位符一个值并迭代数组元素的数量。这是从上面创建的 SQL:

INSERT INTO tblQuoteItems (ProductIDFK,QuoteIDFK,CustomerIDFK) VALUES ((SELECT ProductIDPK FROM tblProducts WHERE ProductName=('Product1', 1, 1), ('Product2', 1, 1)),?,?)

标签: javascriptmysqlnode.jsexpressbulkinsert

解决方案


对于任何可能处于相同情况的人。我找到的答案是创建并使用一个临时表,然后从中选择来查找外键 ID。我无法找到一种方法来使用 Nodejs MySQL 库中的占位符来单独映射到数组中的每个元素。


推荐阅读