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;
36597 次
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 に答える