2016-07-07 10 views
1

私はしばらくの間、これらの二つと格闘:素晴らしい作品MySQLが特定の順序で引数を要求するのはなぜですか?

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 '!'; 

なぜいけないのでしょうか?意味は同じではないのですか?この背後にある根拠は何ですか?これらのような議論の順序を変更すると結果が変わる例がありますか?

+1

構文ルールを定義するのはMySQLです。 – dnoeth

+0

確かに、私はこれの根底に根拠があるのか​​と尋ねています。 – Ares

+1

同じ理由で、おそらくクエリの順序が定義されています。 'SELECT ... FROM ... WHERE ... GROUP BY ...'は動作しますが、 'SELECT ... FROM ... GROUP BY ... WHERE'は動作しません。確かに、それを読むことは同じことを意味します。しかし、コンパイラはその順序でそれを期待していません。それは、言語構文がどのように定義されたかです。 – Siyual

答えて

2

これはa)クエリエンジンが動作する方法であり、b)それを書いた人は、SQLパーサーを使用してオプション節の可変順序を許すためにコーディングの手間を掛けたくないからです。本当に多くの価値を追加するものではありません。

最終的には、同じ理由ls file.txt -aだとfile.txt -a lsは同じシェルコマンド、またはあなたは構文がありますので、答えはであり、それはルールを持っているC.にx = 6 * (9 + 2)代わりのx = 6 9 2 + *を使用する必要が理由ではありません。

+0

いくつかのものは、任意に並べ替えられる理由がありません。これはそれらの事の一つです。 +1。 – Dan

関連する問題