首页 > 解决方案 > MySQL有一个奇怪的行为

问题描述

我使用 MySQL 查询:

SET @from := "";
SET @to := "";
SELECT licensep INTO @from FROM car_system_vehicle WHERE ID = 1;
SELECT licensep INTO @to FROM car_system_vehicle WHERE ID = 2;
UPDATE car_system_vehicle SET licensep = @to WHERE ID = 2;
UPDATE car_system_vehicle SET licensep = @from WHERE ID = 1;

替换两个值licensep

我可以使用 phpMyAdmin 成功运行它,但控制台返回如下错误:

FAIL: (1064) 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以获取在附近使用的正确语法

那么我应该如何处理这个问题呢?

标签: mysql

解决方案


您不需要在变量中交换 2 条记录中的值:

UPDATE car_system_vehicle t1, car_system_vehicle t2
SET t1.licensep = t2.licensep, t2.licensep = t1.licensep 
WHERE t1.id = 1 AND t2.id = 2;

必须保证的唯一条件是每个表的条件必须从中准确选择一条记录。


推荐阅读