MySQL IF ...那么语法错误

时间:2014-12-29 13:03:49

标签: mysql if-statement syntax

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

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)有关,但我从命令行运行完全相同的消息。

我是否犯了一些我无法看到的荒谬简单的错误?或者是否有人对可能导致错误的原因有任何建议?感谢任何帮助!

1 个答案:

答案 0 :(得分:3)

@Gordon Linoff's comment所示,MySQL IF statement仅在stored programs内有效(即存储在MySQL中并随后由MySQL调用以响应特定条件的代码);也就是说,它不能以你正在尝试的方式使用。

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

对于熟悉过程语言的人来说,这似乎很奇怪(其中一个代码描述了要执行的算法和过程步骤 - 因此控制流构造如&#34 ;如果......那么......其他"是无价值的),但SQL是一种声明性语言(其中一个代码描述了所需的结果而如何结果应该实现 - 因此尝试使用控制流构造几乎肯定是由于对语言的误解而产生的。)

举例来说,在过程语言中,可以告诉计算机执行比较,检查结果,然后在结果符合特定条件时输出值:

for each x in Set
  if x < 10 then
    output x

相比之下,在声明性语言中,只需告诉计算机人们想要的结果:

output x from Set if x < 10

或者,在SQL中:

SELECT column_name FROM table_name WHERE column_name < 10