3

私はmysqlで次のクエリを書いていますが、0行を返します

select * from (select col1 as mycol from tbl) temp where temp.mycol = 5

しかし、次のクエリは 4 行を返します

select col1 as mycol from tbl where col1 = 5

最初のクエリの何が問題になっていますか?

4

3 に答える 3

0

それは私の最後でうまくいきます。しかし、私はあなたの問題を検索し、このスレッドを取得します:

MySQL クエリの WHERE 句で列エイリアスを使用するとエラーが発生する

MySQLもこれを述べています: http://dev.mysql.com/doc/refman/5.6/en/problems-with-alias.html

なぜそれが私にとってうまくいくのか、私も混乱しましたか?

于 2014-01-20T06:39:57.950 に答える
0

エイリアスを (MySQL で) 参照したい場合は、WHERE の代わりに HAVING を使用する必要があります。エイリアスを参照していないため、2 行目は機能しますが、WHERE でエイリアスを参照しているため、最初のステートメントは失敗します。

于 2014-01-20T02:49:12.113 に答える
0

あなたのコメントの問題への答えとして:

少し変更してみましたが、提案が機能しませんか??? select * from (select col1 as 'my col' from tbl) temp where 'temp.my col' = 5 — マンディープ シン

ここで発生している問題は、MySQL が「temp.my col」という列を探していることですが、実際に必要なmy colのはテーブルで呼び出された列であるtempため、これを行う必要があります。

select * from (select col1 as `my col` from tbl) temp where `temp`.`my col` = 5
于 2013-06-10T23:04:21.263 に答える