比如SELECT a AS b WHRER b=1;
我这样使用会报错,说b不存在。
学习是最好的投资!
mysql の最後で SQL ステートメントを実行する場合、where 以降のフィルター条件が最初に来て、as B のエイリアスが後に来ます。 したがって、マシンが where の後にエイリアスを認識しても、それを認識しないため、B が存在しないと報告されます。
フィルター条件として B を使用する必要がある場合: 解決策: 外側に別のレイヤーをネストします。 select * from(select A as B from table) t where t.B = XXX -- 任意のフィルター条件
ネストがない場合、フィルタ条件として A のみを使用できます
もちろん、それは存在しません。この b は、a select a AS b FROM table where a = 1
から t.b を選択してください(
テーブルから A を B として選択
) t
ここで、t.b =xxxx
この時点の B は where で直接使用できます
b はクエリ結果 a のエイリアスであり、where
mysql の最後で SQL ステートメントを実行する場合、where 以降のフィルター条件が最初に来て、as B のエイリアスが後に来ます。
したがって、マシンが where の後にエイリアスを認識しても、それを認識しないため、B が存在しないと報告されます。
フィルター条件として B を使用する必要がある場合:
解決策: 外側に別のレイヤーをネストします。
select * from
(
select A as B from table
) t
where t.B = XXX -- 任意のフィルター条件
ネストがない場合、フィルタ条件として A のみを使用できます
もちろん、それは存在しません。この b は、a
のクエリ結果を持つエイリアス専用です。select a AS b FROM table where a = 1
から t.b を選択してください
(
テーブルから A を B として選択
) t
ここで、t.b =xxxx
この時点の B は where で直接使用できます
b はクエリ結果 a のエイリアスであり、where
には絶対に存在しません。