首页 > 解决方案 > 面试题:如何在 SQL 中一次性将多个表连接在一起

问题描述

假设您有许多名称为 Company1、Company2 等的表,直到 Company 1000。结构如下:

Company 1
product cost($)
A        C1A
B        C1B
C        C1C

有 1000 个这样的表。所有 cpmapnies 销售 3 种产品 A、B、C。您将如何将您的公司(如 Company 520)与所有其他 1000 家公司进行比较。

所有这些表都在数据库下Companies

如何在 SQL 中同时连接所有这些表?

我非常了解连接,但我知道一次我们只能连接两个表。有没有办法在 SQL 中将多个表连接在一起

预期产出

product cost($)_Company1  cost($)_Company2   cost($)_Company3   
A        C1A                     C2A          C3A
B        C1B                     C2B          C3B
C        C1C                     C2C          C3C  and so on for all 1000 companies

注意在组合预期输出中,_Company 名称附加到成本列名称以标识与成本对应的公司

面试时被问到这个问题,你会怎么一口气做完,我不知道答案。任何人都可以请帮忙。表的结构与所有表中的列名相同product,并且cost($)是列名

标签: sqlsql-server

解决方案


试试下面的例子。连接表没有限制。

SELECT Company1.Product,
Company1.cost($) 'cost($)_Company1',
Company2.cost($) 'cost($)_Company2',
Company3.cost($) 'cost($)_Company3',
CompanyN.cost($) 'cost($)_CompanyN'
FROM Company1
INNER JOIN Company2 ON Company1.Product = Company2.Product
INNER JOIN Company3 ON Company1.Product = Company3.Product
INNER JOIN CompanyN ON Company1.Product = CompanyN.Product

推荐阅读