为什么受影响的行

为什么受影响的行

这是我的查询:

SELECT u.password, r.active
FROM users u
INNER JOIN resend_pass r
ON u.id = r.user_id
WHERE r.token = 'mytoken' AND r.active = 1


上面查询的结果是这样的:

+----------+--------+
| password | active |
+----------+--------+
| mypass   | 1      |
+----------+--------+


注意:token列是唯一的,因此结果始终是一行(或零行)。



现在,我将该select语句转换为update语句,如下所示:

UPDATE users u
INNER JOIN resend_pass r
ON u.id = r.user_id
SET u.password = 'mynewpass',
    r.active   = 0
WHERE r.token  = 'mytoken' AND
      r.active = 1


然后结果将是这样的:

+-----------+--------+
| password  | active |
+-----------+--------+
| mynewpass | 0      |
+-----------+--------+




好吧,一切都很好。只是我不知道为什么受影响的行数是2?如您所见,只有一行,并且我已经更新了一行的两列,那么为什么受影响的行是2

echo $stm->rowCount(); // 2


不应该是1吗?

最佳答案

SET u.password = 'mynewpass',
    r.active   = 0


多数民众赞成2行在每个表中以u和r为别名。

关于php - 为什么受影响的行数是错误的?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38531925/

10-11 05:39