kaywang 发表于 2018-10-1 10:04:43

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` */
  insertinto `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)

页: [1]
查看完整版本: MYSQL 动态变量赋值不对的情况