mysql变量赋值错误的是_MYSQL 动态变量赋值不对的情况详解

那天我碰到了个怪问题。今天解决了问题。

不过具体原因还有待查找。

在WINDOWS下正常。

DROP TABLE IF EXISTS `t`;

CREATE TABLE `t` (

`id` int(11) NOT NULL auto_increment,

`g_id` int(11) NOT NULL,

`t_str` varchar(255) NOT NULL,

PRIMARY KEY (`id`),

key (`g_id`)

) ENGINE=InnoDB AUTO_INCREMENT=26 DEFAULT CHARSET=utf8;

/*Data for the table `t` */

insert into `t`(`id`,`g_id`,`t_str`) values

(1,2,'wo'),

(2,2,'ni'),

(3,2,'ta'),

(4,3,'wo '),

(5,4,'ni'),

(6,3,'ni'),

(7,4,'ta'),

(8,3,'wang'),

(9,4,'li'),

(10,3,'hai'),

(11,4,'ri'),

(12,2,'ren'),

(13,5,'ta'),

(14,6,'ri'),

(15,6,'ren'),

(16,6,'fuck'),

(17,6,'shit'),

(18,5,'ls'),

(19,5,'chmod'),

(20,5,'chgrp'),

(21,5,'chown'),

(22,3,'rm'),

(23,3,'desc'),

(24,4,'pwd'),

(25,5,'cd');

错误输出

mysql> select g_id from t group by g_id order by g_id desc limit 0,1;

+------+

| g_id |

+------+

| 6 |

+------+

1 row in set (0.00 sec)

mysql> select g_id from t group by g_id order by g_id desc limit 0,1 into @tmp_id;

Query OK, 1 row affected (0.00 sec)

mysql> select @tmp_id;

+---------+

| @tmp_id |

+---------+

| 5 |

+---------+

1 row in set (0.00 sec)

mysql> select version();

+-----------------+

| version() |

+-----------------+

| 5.1.21-beta-log |

+-----------------+

1 row in set (0.00 sec)

mysql>

正确输出:

mysql> select @tmp_id := g_id from t group by g_id order by g_id desc limit 0,1 into @tmp_id;

Query OK, 1 row affected (0.00 sec)

mysql> select @tmp_id;

+---------+

| @tmp_id |

+---------+

| 6 |

+---------+

1 row in set (0.00 sec)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值