gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-05 08:08:56 25 4
gpt4 key购买 nike

我目前正在尝试使用 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 值是有原因的吗?我可以想象指示匹配是否实际发生的标志,但没有理由仅仅因为它们在那里就包含所有列。

关于sql - 使用 create table as select 时避免重复列名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45077413/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com