簡體   English   中英

如何從投影中的表引用中消除 PostgreSQL 列引用的歧義?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM