2013-08-17 66 views
2
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; 

回答

9

你的说法是好的,因为它是。唯一的问题是,你不能像普通查询那样使用它。像IFWHILE这样的控制结构只能在存储过程或函数中使用。

只需创建一个程序是这样的:

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(); 

就是这样。

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

+0

不幸的是,根据我编辑的问题 – cheshirecatalyst

+0

的错误仍然是一样的错误,谢谢你看看^ _^ – cheshirecatalyst

+0

@cheshirecatalyst: - 请教你现在就试试吧。我相信这会起作用!! :) –

相关问题