sql - 使用 create table as select 时避免重复列名

我目前正在尝试使用 CREATE Table AS SELECT 语句创建一个表。在 SELECT 语句中,目前有许多表(超过 10 个)的连接。

CREATE TABLE table_name AS 
    SELECT 
     * 
    FROM 
     table_x x
    LEFT JOIN 
     table_y y
     on x.id=y.fid 
    LEFT JOIN
     table_z z
     on x.id=z.fid
    ...
    ...
    ...

由于许多表共享列名(尽管不是数据),我收到了重复的列名错误。

我想知道是否有一种懒惰的方法来生成列名,所以没有冲突。例如在上面的示例中,table_ytable_z 都有名为 fid 的列。

我想知道是否有一种方法可以生成名为 y.idz.id 或类似名称的列(例如 y_id ,z_id) 而不仅仅是新表中的 idid

我想避免编写一个查询,在该查询中我必须显式写出选择中的所有列,并使用 AS 语句,如下所示:

CREATE TABLE table_name AS 
    SELECT 
     x.id as x_id,
     y.fid as y_fid,
     z.fid as z_fid,
     ...
     ...
     ...
    FROM 
     table_x x
    LEFT JOIN 
     table_y y
     on x.id=y.fid 
    LEFT JOIN
     table_z z
     on x.id=z.fid
    ...
    ...
    ...

最佳答案

也许,我遗漏了什么,但为什么要选择基本上具有相同值的列?

代替:

SELECT x.id as x_id, y.fid as y_fid, z.fid as z_fid, . . .

为什么不呢?

SELECT x.id as x_id, . . .

你想要 NULL 值是有原因的吗?我可以想象指示匹配是否实际发生的标志,但没有理由仅仅因为它们在那里就包含所有列。

https://stackoverflow.com/questions/45077413/

相关文章:

python - 从 Sphinx autodoc 扩展中的文档中排除静态成员

bash - 如何在 Powerline-Plain [Bash-it] 主题的提示中显示彩色主机名

angularjs - headless Chrome : chrome not reachable

ios - react-native-maps 为每个区域填充颜色

spring - 集成测试中的 Autowire JUnit 规则

laravel - smtp 中继 - g 套件 - 带有自定义域电子邮件的 gmail

android - setMultiChoiceItems 对话框中的图标 - Android

python - 管道输入错误 "Input Contains NaN"

sql - 使用 SQL 查询将 Excel 数据加载到 Azure SQL 中

python - 如何从 YouTube 搜索中抓取视频?