【发布时间】:2019-11-28 22:00:02
【问题描述】:
目标:我希望能够从 2 个表之间的 JOIN 的输出中删除常见/重复的列。
问题:我在这里检查过的关于这个主题的大多数其他问题,都谈到在 select
例如:SQL Server : removing duplicate column while joining tables
我正在处理的表通常每个都有 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>
【问题讨论】:
-
您最好的选择是明确列出列名。您需要动态 SQL 来逐字实现您的想法。
-
这类问题是糟糕设计的典型表现。
-
@Strawberry:表面上我也有同样的感觉。我与之交谈的数据库架构师说,这些表带有多个列,以避免更多的连接,这反过来会增加实时仪表板的(查询执行 + 数据获取)时间。
-
我不买