获取MySQL表更新后受影响行的数据


connection.query("UPDATE table SET columnA = valA WHERE columnB = valB;",
function(err, rows, fields) {

..some code..
}

我如何在NodeJS中获得受影响行的数据。

如果是SELECT查询,我可以这样做

sql = rows[0];
id = sql.id;

我知道有rows.affectedRowsrows.changedRows但它只给出了受影响的行数而不是数据

在语句执行之后,没有保存这些信息的属性。您需要通过扩展语句来帮助自己记录这些信息。

SET @uids := '';
UPDATE table 
SET columnA = valA 
WHERE columnB = valB
AND ( SELECT @uids := CONCAT_WS(',', @uids, id) );
SELECT TRIM(LEADING ',' FROM @uids);

在@uid中有更新的行id。

另一种方法是首先使用WHERE子句执行select语句(WHERE columnB = valB)。你得到了更新的行。您可以存储id,然后只在给定的id (WHERE id IN ({yourIdSet}))上运行更新。

最新更新