sql - Postgres 通过多个连接创建表

标签 sql postgresql join create-table

我遇到了一个涉及大量属性 (>15,000) 的数据挖掘问题。我使用公共(public) Id 字段表示多个表中的数据。删除空属性后,我想合并生成的较小表,以便可以计算相关性以删除冗余属性。
我可以通过以下方式轻松加入表格:

select * from lrg_bin0 k0
  join lrg_bin1 k1 on k0.id = k1.id
  join lrg_bin2 k2 on k0.id = k2.id
  join lrg_bin3 k3 on k0.id = k3.id

但是当我尝试使用以下内容创建新表时:

Create table mrg0 as (
  select * from lrg_bin0 k0
    join lrg_bin1 k1 on k0.id = k1.id
    join lrg_bin2 k2 on k0.id = k2.id
    join lrg_bin3 k3 on k0.id = k3.id
) 

Postgress 提示“多次指定列“id””

大量的属性意味着我正在以编程方式完成所有操作,因此建议我可以生成的查询的答案将不胜感激。

最佳答案

使用using in代替on

create table mrg0 as 
select *
from
    lrg_bin0 k0
    join lrg_bin1 k1 using (id)
    join lrg_bin2 k2 using (id)
    join lrg_bin3 k3 using (id)

From the manual :

Also, USING implies that only one of each pair of equivalent columns will be included in the join output, not both

关于sql - Postgres 通过多个连接创建表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23083948/

相关文章:

mysql - 从两行中选择唯一的 id

sql - 在 SQL 中使用其他表作为 WHERE 条件

mysql - 将所有字段添加到另一个表的最快方法?

java - 在java中预览sql结果列

SQL 加权平均值

sql - 选择子查询 PostgreSQL

postgresql - 如何填充从 js 安装脚本创建的 jasperserver 数据库?

r - dplyr : NSE in joins (by)

mysql - 查询sql以从另一个表中查找行数

sql - HIVE中的百分位计算