我目前正在尝试使用 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_y
和 table_z
都有名为 fid
的列。
我想知道是否有一种方法可以生成名为 y.id
和 z.id
或类似名称的列(例如 y_id
,z_id
) 而不仅仅是新表中的 id
和 id
?
我想避免编写一个查询,在该查询中我必须显式写出选择中的所有列,并使用 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"