在返回的mysql结果中查找行数(nodejs)

Posted

技术标签:

【中文标题】在返回的mysql结果中查找行数(nodejs)【英文标题】:find number of rows in returned mysql result (nodejs) 【发布时间】:2013-04-18 11:13:22 【问题描述】:

node.js使用felixge的mysql时,如何查询result对象返回的行数?我有一个相当昂贵的查询,所以我不想先运行COUNT(*),然后再运行第二次查询。

【问题讨论】:

【参考方案1】:

如果是选择查询,只取返回数组的长度。

connection.query(sql, [var1,var2], function(err, results) 
    numRows = results.length;
);

如果是更新/删除查询,返回的字典将有一个affectedRows 变量。

connection.query(sql, [var1,var2], function(err, result) 
    numRows = result.affectedRows;
);

【讨论】:

我真的希望该库有比 github 上的 readme.md 更好的文档。我在发布后不久就发现了这一点(但显然已经足够长,以至于我忘记回来回答了:P)。 请注意,affectedRows 默认情况下将是找到(匹配)的行,而不是具有实际更改数据的行,除非您设置连接标志以关闭 FOUND_ROWS。如果您想弄清楚实际修改了多少行,这很重要。或者您可以使用较新的 changedRows 值。见github.com/mysqljs/mysql#connection-flags @Huckle 8 年后还是一样【参考方案2】:

如果您使用的是自述文件中的示例,只需查看行对象的长度属性(即 rows.length)。

【讨论】:

【参考方案3】:

截至 2015-04-13 的 mssql 2.1.2 版本:

从 DeviceAccountLinks 中删除 其中 DeviceAccountId = @deviceAccountId 和 DeviceType = @deviceType

语句不会产生“未定义”的结果

我已将语句更改为:

从 DeviceAccountLinks 中删除 其中 DeviceAccountId = @deviceAccountId 和 DeviceType = @deviceType; 选择@@rowcount "rowCount"

得到输出:[rowCount:1]

【讨论】:

以上是关于在返回的mysql结果中查找行数(nodejs)的主要内容,如果未能解决你的问题,请参考以下文章

MySQL Workbench 能否在查询结果网格中显示选中的行数?

如何在PHP中获取MYSQL数据库返回的数据的行数?

java中mysql执行update返回啥结果

PHP MySQL 相同的查询返回不同的行数

MySQL---查询性能优化

限制结果集行数