这似乎是一个重复的问题,但它似乎总是涉及多个表的问题。选择表格中的一行时,我还需要将同一行中的查看次数 +1。我知道我不能在同一个查询中使用触发器或两个语句,但是这些事情可以通过与数据库的单个连接来完成吗?选择一行然后 +1 View 字段的首选方法是什么?
最佳答案
它可以在同一个连接中完成,但我想不出一种使用一个查询来完成的方法。
这是您在单笔交易中如何做到这一点;
START TRANSACTION;
UPDATE tbl SET view=view+1 WHERE id = 10;
SELECT * FROM tbl WHERE id = 10;
COMMIT;
第二种“更好”的方法可以避免两次读取 tbl
表。
UPDATE tbl
SET view = (@viewsCount := view + 1)
WHERE id = 10;
为了获得观看次数的新值,我会做这样的事情
SELECT @viewsCount;
第三种方法是像这样利用 LAST_INSERT_ID()
函数
UPDATE tbl
SET view = LAST_INSERT_ID(view) + 1
WHERE id = 10;
然后,要获得新的观看次数,您需要在更新后立即执行此查询。更新后您不能执行任何其他查询,否则您将无法获得预期的值。
SELECT LAST_INSERT_ID();
关于mysql - 在 mysql 的一个连接中选择和更新相同的表和行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30822776/