【问题标题】:Is it possible to create query to execute multiple queries in one query in javascript?是否可以创建查询以在 javascript 中的一个查询中执行多个查询?
【发布时间】:2018-09-28 15:24:19
【问题描述】:

我想以字符串的形式发送多个查询。 我通过javascript将结果作为对象返回。 但是,由于查询之间的“,”,它有一个错误。 我无法删除查询之间的“,”。

    "INSERT INTO  membership ( userId,roleId,groupId )
    VALUES (5,1,5),
    INSERT INTO  membership ( userId,roleId,groupId )
    VALUES (5,1,4),
    INSERT INTO  membership ( userId,roleId,groupId )
    VALUES (5,1,5)"

是否可以在一个查询中执行多个查询?

这是我返回的字符串的 javascript 代码。

var objArray = [];
for (var i =0; i< obj.length ;i++) {
objArray.push( " INSERT INTO membership(id,userId,roleId,groupId) VALUES (" 
obj[i].id + "," +  obj[i].userId  + "," + obj[i].role + "," + obj[i].group + 
")");
 } 
 return objArray.toString();

提前致谢。

【问题讨论】:

  • 它们会是插入查询吗?
  • 是的,我想插入多行

标签: javascript sql execution


【解决方案1】:

使用; 代替,。示例QUERY1;QUERY2;QUERY3

【讨论】:

  • 来自变量的查询。我正在努力删除,
【解决方案2】:

进行多重插入查询

var beforeQuery = 'INSERT INTO membership(id,userId,roleId,groupId) VALUES ';
var qvalues = [];
for (var i=0; i<obj.length; i++) {
   qvalues.push('(' + obj[i].id + ',' + 
   obj[i].userId  + ',' + 
   obj[i].role + ',' + 
   obj[i].group + ')');
} 

var query = beforeQuery + qvalues.join(",");
// result would be something like:
// INSERT INTO membership(id,userId,roleId,groupId) VALUES (1,2,3,4),(3,5,3,6),(2,5,19,2);

// execute query here with query variable, all rows will be inserted with a single query

【讨论】:

  • 如果你想组合不同类型的查询,你应该创建一个过程:dev.mysql.com/doc/refman/8.0/en/create-procedure.html它会一次执行所有的查询,你甚至可以做回滚
  • 感谢您的回答。抱歉,我没有提到查询的验证。整个查询需要这样的语句:IF ( NOT EXISTS (SELECT * FROM members where mid = 1111))
猜你喜欢
  • 2010-11-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-16
  • 2015-12-14
  • 2014-01-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多