在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->>
。
答案 0 :(得分:0)
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)