-2

我一直在尝试编写这个简单的 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 无济于事。有任何想法吗?

4

3 回答 3

2

看起来您正在尝试执行一种 MySQL 不支持的 T-SQL 形式。

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

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

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

于 2013-05-12T09:04:38.290 回答
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模式中。请在此处查看示例。

于 2013-05-12T09:01:35.260 回答
-2

每个语句都必须以分号结束。

像这样

IF object_id('carpool'.'users', 'U') is not null THEN
   PRINT 'Present!';
ELSE
   PRINT 'Not accounted for';
END IF;
于 2013-05-12T08:55:16.430 回答