我有两个表 (a,b),或将表连接到自身,具有相同的列名。(表很宽,大约有一百列。)
使用:
SELECT a.*, b.*
FROM a LEFT JOIN b ON b.id=a.id AND b.date1=a.date2;
Run Code Online (Sandbox Code Playgroud)
... 有效,但现在如果我想从中查看:
CREATE OR REPLACE VIEW v_test_ab AS
SELECT a.*, b.*
FROM a LEFT JOIN b ON b.id=a.id AND b.date1=a.date2;
Run Code Online (Sandbox Code Playgroud)
...它无法创建视图,因为会有多个具有相同名称的列。
在 PostgreSQL 中,有没有办法使用给定的模式自动重命名结果表的列名?
示例如下:
CREATE OR REPLACE VIEW v_test_ab AS
SELECT a.* AS a_*, b.* AS b_*
FROM a LEFT JOIN b ON b.id=a.id AND b.date1=a.date2;
Run Code Online (Sandbox Code Playgroud)
或者可能是这样的:
SELECT a.* AS generate_column_names('a_%', a.*)
, b.* AS generate_column_names('b_%', b.*)
Run Code Online (Sandbox Code Playgroud)
避免需要写:
CREATE OR REPLACE VIEW v_test_ab AS …Run Code Online (Sandbox Code Playgroud) 使用一个环境变量,它就像:
bash$> foo=1 echo "$foo"
1
Run Code Online (Sandbox Code Playgroud)
[编辑:如下所述,即使这样也行不通,但仅是因为$ foo之前是由其他试验设置的。在两次审判之间应该给“ unset foo”。]
但是,如果需要在启动命令的同一命令行中设置多个环境变量,该怎么办?像这些不起作用:
bash$> foo=1 bar=2 echo "$foo $bar"
1
bash$> foo=1 && bar=2 echo "$foo $bar"
1
bash$> (foo=1;foo=2) && echo "$foo $bar"
1
bash$> (foo=1 && foo=2) && echo "$foo $bar"
1
Run Code Online (Sandbox Code Playgroud)
可能吗?(使用脚本很明显)