[英]How to disambiguate PostgreSQL column references from table references in projections?
假設我有這樣的架構:
create table x (t1 int, t2 int);
create table t1 (t1 int, t2 int);
insert into x values (1, 2);
insert into t1 values (1, 2);
現在在 PostgreSQL 中,我可以方便地投影表引用以在結果中創建嵌套行:
select x from x;
生產:
|x |
|------|
|[1, 2]|
但是,如果表和列之間存在沖突,這將不起作用:
select t1 from t1;
這只是轉換為不合格的列引用:
|t1 |
|---|
|1 |
現在,由於我正在維護一個 SQL 生成器,假設我不能為表設置別名(因為我可能不知道它包含哪些列名,並且任何別名仍可能與實際列沖突)。
是否有任何語法可以消除表引用和列引用之間的歧義,例如下面的假設語法?
select t1::the_table_not_the_column from t1
如果我知道列名,這似乎可行:
select row(t1, t2)::t1 as t1 from t1
或者,如果我不知道列名:
select row(t1.*)::t1 as t1 from t1
我建議在這些情況下簡單地使用表別名:
SELECT t FROM x AS t
完畢。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.