INSERT ON DUPLICATE KEY UPDATE to UPDATE multiple rows in single query
Thanks to #danblack and dbfiddle.uk in short I determined that I was missing one of the columns in the ON DUPLICATE KEY UPDATE.

Every single column must be defined for ON DUPLICATE KEY UPDATE to work!

I effective had columns id, a, b, c and d in the table. I forgot to define one of the columns (that wasn't id as that is the first half of the requirement).

Won't Work (missing column):

ON DUPLICATE KEY UPDATE 
id=VALUES(id), 
a=VALUES(a),
c=VALUES(c),
d=VALUES(d);


Will Work (has all table columns):

ON DUPLICATE KEY UPDATE 
id=VALUES(id), 
a=VALUES(a),
b=VALUES(b),
c=VALUES(c),
d=VALUES(d);