is there a way to do an INSERT but on DUPLICATE KEY instead of an update do a SELECT?
Not in one query, but you coul run INSERT IGNORE and then SELECT . The IGNORE makes it ignore any rows that would trigger duplicate key errors instead of halting.
INSERT IGNORE
SELECT
IGNORE