/ / where句で名前付き列を使用するPostgres-postgresql

where句で名前付きカラムを使用するPostgres - postgresql

Postgresでは、この構文に苦労しています。mysqlでは機能しますが、間違っているのは確かではありません。

それでは、jsonドキュメントがあるとしましょう。そのドキュメントの列を選択し、結果を「text」として返します。

したがって、私のクエリは次のようになります。

SELECT member_id, data->>"username" AS username
FROM player.player

期待どおりにこれを返します。

結果

ここで、列から名前を選択して、クエリが次のようになるようにします。

SELECT member_id, data->>"username" AS username
FROM player.player WHERE username LIKE "sam"

クエリを実行すると、これが得られます。

結果2"

なぜそうするのですか?私が返しているjsonは、私が使用しているため、テキストデータ型として返しています json->> 列に。

回答:

回答№1は1

PostgreSQLはSQL標準に基づいており、同じクエリレベルでエイリアスを使用することはできません。派生テーブルを使用して、より高いレベルでフィルタリングする必要があります。

postgres=# select 1 as x where x = 1;
ERROR:  column "x" does not exist
LINE 1: select 1 as x where x = 1;
^
postgres=# select * from (select 1 as x) s where x = 1;
┌───┐
│ x │
╞═══╡
│ 1 │
└───┘
(1 row)