MySQL - 在连接中指定特定列?

16

在进行连接操作(内部连接、左外连接、右外连接或其他),我该如何指定要将哪些列加入到原始表中?

考虑以下示例:

SELECT FirstName FROM User LEFT OUTER JOIN Provider ON User.ProviderID = Provider.ID

这将从用户中选择FirstName,但从Provider选择所有内容。如何指定应包含结果集中的Provider的哪些部分?

4个回答

18

这将只在最终结果集中包括 User.FirstNameProvider.ProviderID

SELECT User.FirstName, Provider.ProviderID FROM User LEFT OUTER JOIN Provider ON User.ProviderID = Provider.ID

这样做会从Provider选择所有内容吗? - Shamim Hafiz - MSFT
这不是他想要的吗?至少这是我从“但选择Provider中的所有内容”中理解到的。 - Tudor Constantin
2
你需要看一下最后一句话 :)。“我该如何指定 Provider 的哪些部分应包含在结果集中?” - Shamim Hafiz - MSFT
考虑到他的查询中没有指定Provider的任何字段,而且有一部分是“但从Provider选择所有内容”的情况,我得出结论这就是他想要/需要的。 - Tudor Constantin
确实是我想要的。谢谢。我不明白为什么人们投票反对你的帖子。 - Mathias Lykkegaard Lorenzen
因为他的问题明确说明他想要将提供者表中的特定列合并到原始表中:“如何指定应在结果集中包含提供者的哪些部分?”这个答案并没有解决问题,相反地,它产生了相反的效果。 - Desprit

6
  SELECT User.FirstName, Provider.ID, Provider.YourExtraColumnname, Provider.YourExtraColumnname2 FROM User LEFT OUTER JOIN Provider ON User.ProviderID = Provider.ID

4
         SELECT `User`.FirstName, Provider.* 
           FROM `User`
LEFT OUTER JOIN Provider 
             ON `User`.ProviderID = Provider.ID

1. 在引用列名时,应该先写表名,如果使用了表的别名,则可以使用别名。

例如:LEFT OUTER JOIN Provider p,然后您可以像这样在选择子句中访问提供者id:

 SELECT `User`.FirstName, p.ID

2. 我在表名User周围添加了反引号,因为它是MySQL的保留字。


2

您可以指定要选择的特定项目,例如:

SELECT User.FirstName, Provider.ID, Provider.Name FROM User LEFT OUTER JOIN Provider ON User.ProviderID = Provider.ID

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接