【发布时间】:2015-11-12 16:49:54
【问题描述】:
使用 PostgreSQL 调用,
CREATE TABLE condor_xrootd AS
SELECT * FROM condor INNER JOIN xrootd_ext
ON (
xrootd_ext.CRAB_Id = condor.CRAB_Id AND
REPLACE(condor.CRAB_ReqName, '_', ':') = xrootd_ext.CRAB_ReqName
);
我得到了错误,
$ psql condor -f ./sql/inner_join.sql
psql:./sql/inner_join.sql:6: ERROR: column "crab_id" specified more than once
这是可以理解的,因为每个表都有一个 Crab_Id 列。我希望能够在不必指定列的情况下进行内部连接,因为我在两个表中总共有大约 400 列。
请告诉我是否可以在不单独列出列的情况下以某种方式消除此错误。
编辑:
我忘了提到速度和稳定性在这里很重要,因为我的加入可能需要几天时间。
【问题讨论】:
-
对于连接,您可以在连接具有相同名称的列时尝试使用 USING 子句而不是 ON,例如condor INNER JOIN xrootd_ext 使用(CRAB_Id)。使用它时,生成的连接应该只有一个被连接的列的实例。在 PostreSQL 中可能有效,也可能无效,但您可以试一试。
-
看看这个问题:stackoverflow.com/questions/15061733/…我相信它回答了你的问题。
标签: postgresql inner-join