小编zim*_*mon的帖子

如何在 SELECT a.*, b.* 中自动重命名列名以具有 ie。结果列名称中的前缀 a_ 和 b_?

我有两个表 (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)

sql postgresql syntax

5
推荐指数
1
解决办法
260
查看次数

如何在具有多个环境变量的bash中启动命令

使用一个环境变量,它就像:

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)

可能吗?(使用脚本很明显)

bash environment-variables command-line-interface

2
推荐指数
1
解决办法
2802
查看次数