Twoje oświadczenie jest w porządku, tak jak jest. Jedynym problemem jest to, że nie można go używać jak normalnego zapytania. Struktury kontrolne, takie jak IF
lub WHILE
są dozwolone tylko w procedurach lub funkcjach składowanych.
Po prostu utwórz taką procedurę:
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 $$
i nazwij to tak:
call select_or_insert();
To wszystko.