Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么MySQL要求参数按特定顺序排列?_Mysql_Sql_Syntax - Fatal编程技术网

为什么MySQL要求参数按特定顺序排列?

为什么MySQL要求参数按特定顺序排列?,mysql,sql,syntax,Mysql,Sql,Syntax,我和这两个人搏斗了一段时间: LOAD DATA LOCAL INFILE '...' INTO TABLE ... FIELDS TERMINATED BY '!' LINES TERMINATED BY '\n'; 这很有效。不起作用的是: LOAD DATA LOCAL INFILE '...' INTO TABLE ... LINES TERMINATED BY '\n' FIELDS TERMINATED BY '!'; 为什么不呢?意思不一样吗?这背后的理由是什么?有没有这样

我和这两个人搏斗了一段时间:

LOAD DATA LOCAL INFILE '...' INTO TABLE ... 
FIELDS TERMINATED BY '!' LINES TERMINATED BY '\n';
这很有效。不起作用的是:

LOAD DATA LOCAL INFILE '...' INTO TABLE ... 
LINES TERMINATED BY '\n' FIELDS TERMINATED BY '!';
为什么不呢?意思不一样吗?这背后的理由是什么?有没有这样的例子,改变参数的顺序会改变结果?

因为这是a)查询引擎的工作方式,b)因为编写它的人不想经历编码的麻烦,以允许使用SQL解析器对可选子句进行可变顺序,因为这并没有真正增加多少价值


归根结底,这与
ls file.txt-a
file.txt-a ls
不是同一个shell命令的原因是一样的,或者是你不得不使用
x=6*(9+2)
而不是C中的
x=6 9 2+*
的原因。答案是因为有语法,它有规则。

是由MySQL来定义语法规则的。当然,我在问这背后的理由是什么。可能是因为同样的原因定义了查询顺序<代码>选择。。。从…起哪里分组依据…工作,但
选择。。。从…起分组方式。。。其中
没有。当然,读起来它们的意思是一样的。但是编译器不希望它按那个顺序运行。这就是语言语法的定义。有些东西没有理由被任意重新排序。这就是其中之一+1.