MySQL在SELECT上的更新
在MySQL中,是否可以在同一查询上更新所选记录 例如,如果查询MySQL在SELECT上的更新,mysql,sql,Mysql,Sql,在MySQL中,是否可以在同一查询上更新所选记录 例如,如果查询 SELECT * FROM `table` WHERE field = "value" LIMIT 0,2 返回两行,然后在同一个查询中,我需要将表的count字段增加1。有可能吗?有可能您可以编写为更新为查询为: UPDATE my_table SET count = count + 1 WHERE field = "value" LIMIT 2; 或对于带有偏移量的限制,请尝试: UPDATE my_ta
SELECT *
FROM `table`
WHERE field = "value"
LIMIT 0,2
返回两行,然后在同一个查询中,我需要将表的
count
字段增加1。有可能吗?有可能您可以编写为更新为查询为:
UPDATE my_table
SET count = count + 1
WHERE field = "value"
LIMIT 2;
或对于带有偏移量的限制
,请尝试:
UPDATE my_table a
INNER JOIN (SELECT id FROM my_table WHERE field = "value" LIMIT 0, 2) b
ON a.id = b.id
SET count = count + 1;
这是不可能的。动词
SELECT
仅检索数据(不修改数据);动词UPDATE
只修改数据(不检索数据)。没有MySQL谓词将执行这两个操作。您必须使用两个单独的语句
但是,这两条语句可以封装在事务中(如果存储引擎支持),以确保它们以原子方式执行和/或可以从存储过程中调用,从而简化客户端必须发出的命令。将两者结合起来将有:
DELIMITER ;;
CREATE PROCEDURE select_and_update(value TEXT)
BEGIN
START TRANSACTION;
SELECT * FROM `table` WHERE field = value LIMIT 0,2;
UPDATE `table` SET count = count + 1 WHERE ...;
COMMIT;
END;;
DELIMITER ;
那么你的客户只需要做:
CALL select_and_update('value');
你能再精确一点吗?@krammer在选择数据后,我需要将所选行数更新1(以获得显示的次数)。所以我认为最好将两个查询都写为一个,为什么不分别写两个查询呢?您所请求的一个不支持单选query@Udhay:我不认为MySQL有任何类似于PostgreSQL的
更新。。。返回
。您必须编写两个查询。