クエリ:
Explain SELECT * FROM TABLE WHERE 1 = 2
指定されたテーブルのフィールド名を表示します。誰でもこの構文を説明できますか? 前もって感謝します。
1 = 2
は falseであるため、結果は返されません。(そのWHERE
句に一致するレコードがないため、テーブルの見出しだけを取得し、レコードは取得しません。)
1 は 2 と等しくないため、クエリの結果は空になります。つまり、考えられる出力に行がない場合、式 1 = 2 は真になります。したがって、取得できるのは列ヘッダー (フィールド名) だけで、実際のデータ行はありません...
このEXPLAIN
ステートメントは、MySQL がステートメントを実行する方法に関する情報を取得する方法として使用できます。
ステートメントの前SELECT
にキーワード を付けるとEXPLAIN
、MySQL はクエリ実行計画に関するオプティマイザからの情報を表示します。つまり、MySQL は、テーブルがどのように結合され、どの順序で結合されるかに関する情報を含め、ステートメントをどのように処理するかを説明します。
つまり、EXPLAIN ステートメントは、MySQL がどのようにクエリを実行しているかを調査するために使用されます。
ステートメントは次の出力を生成します-
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Impossible WHERE
列の下Extra
にあるように、テキストが返されてImpossible WHERE
います。これは、MySQL がゼロ行になることを識別したことを意味します。
同様に、他の列は、使用されている INDEXES やその他の有用な情報を識別するのに役立ちます。
詳細については、EXPLAIN 構文を参照してください。
where条件がfalseであるため、クエリは結果を生成しません... 1、2の参照が列ヘッダーへの参照であり、結果を生成する場合、1 = 2の論理条件はfalseになります。
explain
クエリの実行計画を確認するために使用されます。クエリの先頭に追加すると、選択などに使用されるインデックスを確認できます。
したがって、クエリは結果を表示しません。explain
ステートメントから 削除して実行するselect ...
と、クエリの結果が得られます。あなたの場合、それ1=2
は決して結果ではありませんtrue
。
説明を参照
空のセットを返しています (列名とデータを列に射影しますが、where 句はすべてをフィルター処理するため、列名のみが表示されます)。
数文字少なくても同じことができます。
select top 0 * from TABLE
SELECT *(すべてのテーブル) FROM TABLE(ここでのテーブル名はテーブルです) WHERE 1(テーブルの名前 1) (等しい) = 2
たとえば、1 という名前のテーブルが 2 に等しいテーブルのテーブルからすべてのテーブルを表示します。
乾杯。、