我一直在尝试编写这个简单的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无效。 任何想法?
答案 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;