Looking for a while now already for how to accomplish this.
Seems that all solutions need unique fields with indexes.
there is no IF NOT EXISTS syntax in INSERT, but you could make use of the ON DUPLICATE KEY mechanism. Assuming you create a unique index on firstname, lastname, your update might read:
INSERT INTO tb (firstname, lastname)
VALUES ('Jack', 'Doe')
ON DUPLICATE KEY UPDATE lastname = lastname;
which renders the insert neutral.