繁体   English   中英

Mysqljs,一个查询中的几个查询

[英]Mysqljs, several queries in one query

有没有一种方法可以执行由多个查询组成的SQL查询?

以下示例返回语法错误:

connection.query('UPDATE table1 SET field="1" WHERE id=1; UPDATE table1 SET field="2" WHERE id=2;'
,function(error, results, fields) {});

您可能会发现您的MySQL包不支持多个语句查询。 目前尚不清楚您使用的是哪个MySQL包(那里有多个)。 某些语言中的某些连接器确实提供了此功能(我正在特别考虑PHP),但是我不知道是否有任何node.js包可以提供。

但是...无论如何这不是一个好习惯。 要了解原因,请考虑将一个完整的查询列表作为一个大的长字符串运行:

connection.query(`
    UPDATE table1 SET field='a' WHERE id=1;
    UPDATE table1 SET field='b' WHERE id=2;
    UPDATE table1 SIT field='c' WHERE id=3;
    UPDATE table1 SET field='d' WHERE id=4;
    UPDATE table1 SET field='e' WHERE id=5;
`, function (err, results, fields) {});

该查询将因MySQL语法错误而失败,因为我故意将关键字拼写错误。 但是,您将仅从MySQL连接器中得到一个“语法错误”,这将取决于您要尝试查找问题的每个查询。 对于这样的简单错误,可能并不难,但是如果您要使用复杂的逻辑构建较长的查询并将它们全部连接成一个长字符串,则调试起来将非常困难。

您可能会尝试通过这种方式来提高性能,但是获得的任何性能提升都是很小的。 您将节省一些时间将查询传输到数据库服务器(一个大字符串,而不是一堆单独的字符串),但是服务器仍将不得不一次执行一个查询。

TL; DR一次运行一个查询。 它使查找问题变得更加容易,并且将超过您可能获得的任何性能优势。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM