2

MySQLで次のクエリを試しましたが、

select first_name from my_contacts WHERE 'Blunt' = last_name;

そしてそれはうまくいきます。

と同じように、

select first_name from my_contacts WHERE last_name = 'Blunt';

WHEREでは、句はどのように機能しますか。に遭遇すると、その後に列名と RHS の値 (この場合は文字列)WHEREが続くことが期待されると想定しました。=

しかし、LHS と RHS を入れ替えても問題ないようです。CまたはC ++に似ていますか、if(a == 1)またはif(1 == a)CまたはC ++にありますか(RHSかLHSかは関係ありません)?

注:この問題で私を助けることができるリンクがある場合は、それらを含めてください

4

2 に答える 2

2

コンパイラが C ソース コードで行うのと同じように、MySQL (または任意のデータベース)はクエリ テキストを解析し、構文ツリーを使用して実行可能なもの、つまりクエリ プランを作成します。MySQL は、クエリが何を意味するのかを少しずつ理解し、他のプログラミング言語と同様に文法を使用して、各部分が何であるかを理解しようとします。Borniet が指摘しているように、where 句の中に定数式を入れることさえ許されています。2 つの列が等しいかどうかを比較することもできます。これは、MySQL がWHEREブール値に強制できる結果を持つ任意の式を使用できるためです。

于 2013-05-23T07:04:48.200 に答える