2016-06-09 8 views
1

Wenn ich doppelte Mit der Taste UpdateWie Validierung verwenden, wenn ich doppelte verwenden Key-Update

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

ich für Validierung mit den bestehenden Wert vergleichen möchten Wie kann ich tun?

ich eine Methode versucht haben

where date < VALUES(date) 

Aber alle Verfahren sind Syntaxfehler

Vielen Dank für das Lesen

Antwort

1

Versuchen CASE EXPRESSION mit:

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)   
Verwandte Themen