首页 > 解决方案 > SQL:连接具有大量列的表时删除重复列

问题描述

目标:我希望能够从JOIN2 个表的输出中删除常见/重复的列。

问题:我在这里检查过的关于这个主题的大多数其他问题,都谈到在后面明确提及列名select

例如:SQL Server:连接表时删除重复列

我正在处理的表通常每个都有 20 多列,单独手动编写每个列名并不是最佳选择。

因此,如果 TableA 有 A 列,而 TableB 有 B 列,它们之间有一个公共列,那么来自 JOIN 的非重复列的最终数量将是 A+B-1,其中 A, B > 20

现有查询:

-- Following query includes the duplicate column in the result
SELECT *
FROM TABLEA A
INNER JOIN TABLEB B ON (A.ID = B.ID)
WHERE <SOME_CONDITION>

我遇到的其他解决方案:

-- Following query omits the duplicate column in the result
SELECT A.ID, A.A1, A.A2, A.A3, A.A4, A.A5, A.A6, A.A7, A.A8, A.A9, A.A10,
    B.A1, B.B2, B.B3, B.B4, B.B5, B.B6, B.B7, B.B8, B.B9, B.B10
FROM TABLEA A
INNER JOIN TABLEB B ON (A.ID = B.ID)
WHERE <SOME_CONDITION>

标签: mysqlsqlvertica

解决方案


如果唯一重复的列是JOIN列,则可以使用以下方法解决此问题USING

SELECT *
FROM TABLEA A INNER JOIN
     TABLEB B 
     USING (id)
WHERE <SOME_CONDITION>;

推荐阅读