SQL if语句语法错误

时间:2013-05-12 08:48:33

标签: mysql if-statement

我一直在尝试编写这个简单的mysql语句来检查表是否存在:

IF object_id('carpool'.'users', 'U') is not null THEN
    PRINT 'Present!'
ELSE
    PRINT 'Not accounted for'
END IF

'carpool'是我的架构,'users'是一个表 我的sql版本是5.1.52-community 我一直收到这个错误:

Error Code: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'IF' at line 1   0.000 sec

我尝试了几种语法,例如IF BEGIN END ELSE BEGIN END无效。 任何想法?

3 个答案:

答案 0 :(得分:2)

看起来你正在尝试使用一种不支持的T-SQL形式。

没有打印功能,也没有object_id。有一种IF函数可以在SELECT语句中使用:

SELECT IF(1 = 1, 'present', 'not');

你在阅读MSSQL doco而不是MySQL doco吗? MSSQL支持这些功能。

答案 1 :(得分:1)

根据您的目标,您可能希望使用以下内容:

SELECT
  CASE WHEN EXISTS (SELECT NULL
                    FROM information_schema.tables 
                    WHERE table_schema = 'carpool' AND table_name = 'users')
       THEN 'Present'
       ELSE 'Not accounted for' END;

这将检查users架构中是否存在表carpool。请参阅示例here

答案 2 :(得分:-1)

每个声明必须以分号结束。

喜欢这个

IF object_id('carpool'.'users', 'U') is not null THEN
   PRINT 'Present!';
ELSE
   PRINT 'Not accounted for';
END IF;