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