魏长东

weichangdong

东邪

mysql@变量的两种形式

两种不同的格式:

第一:SET @update_id := NULL;

第二:SET @update_id = NULL;

就是一个冒号(:)的差别。

功能的差别是(我自己认为的啊):第一种是变量的形式,第二种是赋值的形式。

第一种详解:

SET @update_id := NULL;
UPDATE mywcd SET price=101, name=(select @update_id := name) WHERE id=2 LIMIT 1;
SELECT @update_id;

执行这个语句,会返回更新成功,(没有更新任何数据,也返回)的那条记录的name字段的数值。

mysql> select  *  from  mywcd where id=3;
+----+-------+------+
| id | price | name |
+----+-------+------+
|  3 |   103 | wcd  |
+----+-------+------+
1 row in set (0.03 sec)

执行返回这个:

mysql> SELECT @update_id;
+------------+
| @update_id |
+------------+
| wcd        |
+------------+
1 row in set (0.00 sec)

第二种详解:

SET @update_id = NULL;
UPDATE mywcd SET price=100, name=(select @update_id = name) WHERE id=3 LIMIT 1;
SELECT @update_id;

执行完这个,name字段的数值,就直接被替换成第一条语句赋值的数值了。这个语句的数值就是NULL了。