我有这张表:
// user
+----+----------+---------------------+-------------+
| id | name | email | reputation |
+----+----------+---------------------+-------------+
| 1 | Jack | <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="214b40424a101361464e4e464d440f424e4c" rel="noreferrer noopener nofollow">[email protected]</a> | 10 |
| 2 | John | <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="feb4a1cfcdcacdbe87939f9792d09d9193" rel="noreferrer noopener nofollow">[email protected]</a> | 1423 |
| 3 | Ali | <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="42737b7b70032e2b023b232a2d2d6c212d2f" rel="noreferrer noopener nofollow">[email protected]</a> | 322 |
| 4 | Peter | <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="22520c171662454f434b4e0c414d4f" rel="noreferrer noopener nofollow">[email protected]</a> | 950 |
+----+----------+---------------------+-------------+
我还有两个身份证号码。 $op
和 $user
。我想加上 2
(对于 $op
)和 15
(对于 $user
)的当前声誉。所以这是预期的输出:
$op = 3;
$user = 1;
// user
+----+----------+---------------------+-------------+
| id | name | email | reputation |
+----+----------+---------------------+-------------+
| 1 | Jack | <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="89e3e8eae2b8bbc9eee6e6eee5eca7eae6e4" rel="noreferrer noopener nofollow">[email protected]</a> | 25 |
| 2 | John | <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="450f1a74767176053c28242c296b262a28" rel="noreferrer noopener nofollow">[email protected]</a> | 1423 |
| 3 | Ali | <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="ebdad2d2d9aa8782ab928a838484c5888486" rel="noreferrer noopener nofollow">[email protected]</a> | 324 |
| 4 | Peter | <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="d2a2fce7e692b5bfb3bbbefcb1bdbf" rel="noreferrer noopener nofollow">[email protected]</a> | 950 |
+----+----------+---------------------+-------------+
如何通过一个查询来做到这一点?
我可以通过两个单独的查询来做到这一点:
UPDATE user SET reputation = reputation + 2 WHERE id = :op
UPDATE user SET reputation = reputation + 15 WHERE id = :user
最佳答案
为什么不尝试:
UPDATE user SET reputation = reputation + (CASE id WHEN :op THEN 2 WHEN :user THEN 15 ELSE 0 END) WHERE user in (:user, :op)
关于mysql - 如何通过一个查询更新多行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37617378/