0
我有问题,使这个简单的查询工作:未签名的现场更新到最大值
INSERT INTO stock
(articles_id, date, in, out)
VALUES
(106, '2017-08-24', 0, 4)
ON DUPLICATE KEY UPDATE out = IF(out - 4 >= 0, out - 4, 0)
这是库存表的结构:
CREATE TABLE IF NOT EXISTS `stock` (
`articles_id` mediumint(8) unsigned NOT NULL,
`date` date NOT NULL,
`in` mediumint(8) unsigned NOT NULL COMMENT 'new units in date',
`out` mediumint(8) unsigned NOT NULL COMMENT 'no. of units sold in date'
PRIMARY KEY (`articles_id`,`date`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
查询到的记录已经存在,并且具有下列值:
- articles_id:106
- 日期:2017年8月2日4
- 在:0
- 出:2运行查询
后,出具有的值,这是我想是因为此字段是无符号(我想这样),如果我减去比原来更大的值,它会从最大值开始倒数。
但是,应该不是我的如果语句阻止该行为?
所以我猜(出 - 4)不考虑它的价值,但它的经营的领域本身,从而得到这个值:16777215,因为它大于0,它进入第一个条件并最终进行减法。 – user3514092