mysql查询unsigned -unsigned错误

时间:2016-06-17 09:22:40

标签: mysql

CREATE TABLE `t1` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `int1` bigint(20) unsigned NOT NULL,
  `int2` bigint(20) unsigned NOT NULL,
  PRIMARY KEY (`id`),
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=latin1

如果int1大于int2,则执行"选择(int1 - int2)作为来自t1&#34的int3的结果是错误的!谁能帮助我?谢谢!

1 个答案:

答案 0 :(得分:0)

BIGINT UNSIGNED未签名,不能为否定。

如果int1-int2小于int1,您的表达式int2将使用负中间值。

你应该隐式转换为SIGNED。试试这个;)

select CAST(`int1`AS SIGNED) - CAST(`int2`AS SIGNED) as `int3` from t1