如果在SQL Script for Mysql中有条件

fit*_*ldo 13 mysql database if-statement

在执行顺序执行的sql脚本中,是否有一种方法可以引入IF THEN ELSE条件来控制查询执行的流程?

我正好碰上这种http://www.bennadel.com/blog/1340-MySQL-Does-Not-Support-IF-ELSE-Statements-In-General-SQL-Work-Flow.htm 其说,IF那么ELSE将无法在sql脚本中工作.

还有另外一种方法吗?

基本上,我想运行一个特定的"从表中选择colName"命令并检查colName是否对应于特定值.如果是,请继续执行脚本的其余部分.否则,停止执行.

请指教.

Mat*_*att 24

我只是将SQL脚本包装在允许条件代码的过程中.如果你不想留下陈述,你可以在完成后放弃程序.这是一个例子:

delimiter //

create procedure insert_games() 

begin

    set @platform_id := (select id from platform where name = 'Nintendo DS');

    -- Only insert rows if the platform was found
    if @platform_id is not null then 

        insert into game(name, platform_id) values('New Super Mario Bros', @platform_id);
        insert into game(name, platform_id) values('Mario Kart DS', @platform_id);

    end if;

end;

//

delimiter ;

-- Execute the procedure
call insert_games();

-- Drop the procedure
drop procedure insert_games;
Run Code Online (Sandbox Code Playgroud)

如果您还没有使用过程,"delimiter"关键字可能需要一些解释.第一行将分隔符切换为"//",以便我们可以在程序定义中包含分号,而MySQL不会尝试解释它们.创建过程后,我们将分隔符切换回";" 所以我们可以像往常一样执行语句.