Su declaración está bien como está. El único problema es que no puede usarlo como una consulta normal. Estructuras de control como IF
o WHILE
solo se permiten en funciones o procedimientos almacenados.
Simplemente cree un procedimiento como este:
delimiter $$
create procedure select_or_insert()
begin
IF EXISTS (select * from users where username = 'something') THEN
select id from users where username = 'something';
ELSE
insert into users (username) values ('something');
END IF;
end $$
y llámalo así:
call select_or_insert();
Eso es todo.