3
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;
4

3 に答える 3

13

あなたの発言はそのままで結構です。唯一の問題は、通常のクエリのように使用できないことです。IFまたはのような制御構造WHILEは、ストアド プロシージャまたは関数でのみ許可されます。

次のようなプロシージャを作成するだけです。

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 $$

次のように呼び出します。

call select_or_insert();

それでおしまい。

于 2013-08-17T11:07:31.027 に答える
1

次のように試すことができます:-

if exists( select * from mytable where field = 'something') 
begin
   select somefield from mytable where field = 'something';
end
else
 begin
    insert into users (username) values ('something');
end

また

if not exists( select * from mytable where field = 'something') 
begin
    insert into users (username) values ('something');       
end
else
 begin
    select somefield from mytable where field = 'something';
 end

上記のクエリは両方とも同じですが。

または、次の場合を使用してこれを試してください:

IF EXISTS (select * from mytable where users = 'something')
    select field from mytable where users = 'something'
else
    into mytable (users) values ('something')

SQLFIDDLEDEMOは次のとおりです。

于 2013-08-17T08:01:19.170 に答える