MySQL:从多个表中检索数据
请看下表结构MySQL:从多个表中检索数据,mysql,sql,join,foreign-keys,Mysql,Sql,Join,Foreign Keys,请看下表结构 客户端表具有提供程序表的外键,该外键不为NULLPortfolio表具有客户机表的外键,该外键也不是NULL 我需要从Portfolio表中检索所有字段,客户的名称以及分配给客户的提供者名称,后者由Portfolio表引用 如何在SQL代码中执行此操作?尝试使用内部联接执行以下查询 SELECT Portfolio.*,Client.name as "Client Name",Provider.name as "Provider Name" FROM Portfolio INNE
客户端
表具有提供程序
表的外键
,该外键不为NULL
Portfolio
表具有客户机
表的外键
,该外键也不是NULL
我需要从Portfolio
表中检索所有字段,客户的名称
以及分配给客户的提供者
名称,后者由Portfolio
表引用
如何在SQL代码中执行此操作?尝试使用内部联接执行以下查询
SELECT Portfolio.*,Client.name as "Client Name",Provider.name as "Provider Name"
FROM Portfolio
INNER JOIN Client ON Portfolio.Client_id=Client.id
INNER JOIN Provider ON Client.Provider_id = Provider.id
这将为您提供您期望的结果:
Select * from client
join portfolio on client.id=portfolio.clientId
join provider on client.provider_id=provider.id
它可以工作,但是有没有一种方法可以替换输出中Client
表的“Name”列的标题和Provider
表的“Name”列?因为每个人都有相同的列名名称
?除此之外,它还返回所有3个表中的所有数据?是的,您可以。您没有使用*
而是使用它来编写所有列重复名称
,别名
我的意思是我需要“公文包”中的所有数据,但不需要其他数据。那么我应该在哪里指定列名呢?那么您必须编写Portfolio.*
而不是*
否,我要问的是如何提供Client
和Provider
表的列名称。由于我不需要表中除Provider
以外的所有字段,我如何指定我需要的列并为它们分配别名?@Sniper添加所需列的名称,而不是客户端。如果您有双重名称,则必须添加tablename作为前缀。