2016-06-09 67 views
1

如何使用验证当我使用重复键更新当我使用重复键更新

INSERT INTO test_table (name, age, date) 
     VALUES (Kevin, 20, now) 
     ON DUPLICATE KEY UPDATE name = VALUES(name), 
           age = VALUES(age), 
           date = VALUES(date) 

我想与现有的值来比较验证 我该怎么办?

我已经尝试了一些方法

where date < VALUES(date) 

但是所有的方法都是语法错误

感谢您阅读

回答

1

尝试使用CASE EXPRESSION

INSERT INTO test_table (name, age, date) 
     VALUES (Kevin, 20, now) 
     ON DUPLICATE KEY 
     UPDATE name = CASE WHEN `date`< values(`date`) THEN VALUES(name) ELSE name end, 
       age= CASE WHEN `date`< values(`date`) THEN VALUES(age) ELSE age end, 
       `date`= CASE WHEN `date`< values(`date`) THEN VALUES(date) ELSE `date` end 
0
INSERT INTO test_table (name, age, date) 
     VALUES (Kevin, 20, now) 
     ON DUPLICATE KEY UPDATE age = IF(`date` < values(`date`), values(age), age), 
           name = IF(`date` < values(`date`), values(name), name), 
           date = IF(`date` < values(`date`), values(date), date)