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,则执行“从t1将select(int1-int2)作为int3的结果”错误!谁能帮助我?谢谢!

最佳答案

BIGINT UNSIGNED是无符号的,不能为负。

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

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

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

08-05 23:56