MySQL 5.5 IF存在THEN语法问题

时间:2016-12-21 01:34:37

标签: mysql if-statement mysql-5.5

我试图在一些旧公司的MySQL 5.5代码中包含一些逻辑检查:

例如,

CREATE TABLE IF NOT EXISTS <table_a> (
blah blah blah
);

我正在尝试添加逻辑,以便只在另一个表存在时执行查询:

If <table_b> EXISTS

THEN

CREATE TABLE IF NOT EXISTS <table_a> (
blah blah blah
);

END IF;

这是我的查询遵循MySQL 5.5语法(https://dev.mysql.com/doc/refman/5.5/en/if.html

IF EXISTS(SELECT table_name 
            FROM INFORMATION_SCHEMA.TABLES
           WHERE table_schema = 'table_b_database'
             AND table_name = 'table_b')


THEN

       CREATE TABLE IF NOT EXISTS <table_a> (
    blah blah blah
    );

END IF;

可悲的是,有一条错误消息:

SQL Error (1064): You have an error in your SQL syntax;

任何大师都可以启发吗?感谢。

1 个答案:

答案 0 :(得分:0)

根据IF Syntax

的文件
IF search_condition THEN statement_list
    [ELSEIF search_condition THEN statement_list] ...
    [ELSE statement_list]
END IF

你应该可以做类似

的事情
IF EXISTS(SELECT table_name 
        FROM INFORMATION_SCHEMA.TABLES
       WHERE table_schema = 'table_b_database'
         AND table_name = 'table_b')

THEN CREATE TABLE IF NOT EXISTS <table_a> (
        blah blah blah
     );
END IF

我希望这有助于