MySQL如果…那么语法错误

MySQL如果…那么语法错误,mysql,if-statement,syntax,Mysql,If Statement,Syntax,我一直试图在MySQL(v5.6.13)中使用IF语句,但没有成功。我最终将代码缩减为下面的简单示例,但仍然不起作用: IF 10>1 THEN SELECT 10; END IF; 当我运行此命令时,会出现以下错误: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use nea

我一直试图在MySQL(v5.6.13)中使用
IF
语句,但没有成功。我最终将代码缩减为下面的简单示例,但仍然不起作用:

IF 10>1 THEN
    SELECT 10;
END IF;
当我运行此命令时,会出现以下错误:

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 10>1 THEN
    SELECT 10' at line 1
我确实想知道这是否与我正在使用的MySQL客户端(Sequel Pro)有关,但我从命令行得到了完全相同的消息

我是不是犯了一些我看不见的可笑的简单错误?或者是否有人对可能导致错误的原因有任何建议?任何帮助都将受到感激

如中所示,MySQL仅在中有效(即存储在中的代码,然后由MySQL根据特定条件调用);也就是说,它不能以您正在尝试的方式使用

但是,在SQL中很少需要使用
IF

对于熟悉过程语言的人来说,这似乎很奇怪(在过程语言中,代码描述了要执行的算法和过程步骤,因此“if…then…else”之类的控制流构造非常宝贵),但SQL是一种声明性语言(其中一个人的代码描述了期望的结果,而不是如何实现该结果,因此尝试使用控制流结构几乎肯定是由于对语言的误解)

举例来说,在程序语言中,可以告诉计算机执行比较,检查结果,然后如果结果符合某些标准,则输出一个值:

集合中每个x的

如果x<10,则
输出x
相比之下,在声明性语言中,只需告诉计算机想要什么结果:

如果x<10,则从集合输出x
或者,在SQL中:

SELECT column_name FROM table_name WHERE column_name < 10
从列名称<10的表名称中选择列名称

您只能在程序块(如存储过程、函数和触发器)中使用
if
。在其他上下文中无法识别它。但是,有一个内联if语句。这里有一个很好的示例:谢谢@GordonLinoff-非常有帮助!现在阅读文档这一点在那里是可以理解的,但没有什么特别之处非常明确(嗯,依我看!)。