我一直在尝试使用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)有关,但我从命令行运行完全相同的消息。
我是否犯了一些我无法看到的荒谬简单的错误?或者是否有人对可能导致错误的原因有任何建议?感谢任何帮助!
答案 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