Mysql BIGINT比较没有正确评估

时间:2014-04-16 11:29:30

标签: mysql

所以我遇到了一个问题,要么我忘了一些基本的东西,要么我发现了一个错误。我把它缩小到了这个范围:

我的表:

CREATE TABLE `tbl` (
  `id` int(11) NOT NULL,
  `timestmp` int(11) NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

简单。我的问题:

insert into tbl (id, timestmp) values (1, 1)
on duplicate key update timestmp = if(values(timestmp) > timestmp,
values(timestmp), timestmp)

表格将包含

(1, 1)

使用

重复查询
values (1, 2)

表格将包含

(1, 2)

使用

重复查询
values (1, 1)

仍然包含

(1, 2)

大。正是我们想要的。而是使用此表:

CREATE TABLE `tbl` (
  `id` int(11) NOT NULL,
  `timestmp` bigint(20) NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

让我们做同样的询问:

insert into tbl (id, timestmp) values (1, 1)
on duplicate key update timestmp = if(values(timestmp) > timestmp,
values(timestmp), timestmp)

表包含:

(1, 1)

查询:

values (1, 2)

表包含:

(1, 1)

什么?我们试试

values (1, -1)

表包含:

(1, -1)

JKLFSD !!!!!这是怎么回事?这应该发生吗?我完全误解了什么吗?我需要一个特殊的函数来进行bigint比较吗?

0 个答案:

没有答案