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"
クエリを実行すると、これが得られます。
なぜそうするのですか?私が返しているjsonは、私が使用しているため、テキストデータ型として返しています json->>
列に。
回答:
回答№1は1PostgreSQLは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)