【问题标题】:MySQL - specific columns on join?MySQL - 加入时的特定列?
【发布时间】:2011-10-13 04:05:52
【问题描述】:

在进行连接(内、左外、右外或其他)时,如何指定表上的哪些列要连接到原始表中?

考虑以下示例:

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

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

【问题讨论】:

    标签: mysql sql


    【解决方案1】:

    这只会在最终结果集中包含User.FirstName Provider.ProviderID

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

    【讨论】:

    • 这不会从 Provider 中选择所有内容吗?
    • 这不是他想要的吗?至少这是我从 所理解的,但是从 Provider 中选择所有内容
    • 你需要看最后一句:)。 “如何指定 Provider 的哪些部分应包含在结果集中?”
    • 考虑到在他的查询中没有指定来自 Provider 的字段,以及带有 but select all from Provider 的部分,我坚持认为这就是他想要的/需要
    • 这确实是我想要的。谢谢。我不明白为什么人们对你的帖子投了反对票。
    【解决方案2】:
      SELECT User.FirstName, Provider.ID, Provider.YourExtraColumnname, Provider.YourExtraColumnname2 FROM User LEFT OUTER JOIN Provider ON User.ProviderID = Provider.ID
    

    【讨论】:

      【解决方案3】:
               SELECT `User`.FirstName, Provider.* 
                 FROM `User`
      LEFT OUTER JOIN Provider 
                   ON `User`.ProviderID = Provider.ID
      

      1。您在列之前使用表名,或者如果您为表设置别名,则可以使用别名。

      例如LEFT OUTER JOIN Provider p 然后您可以像这样访问 select 子句中的提供者 ID:

       SELECT `User`.FirstName, p.ID
      

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

      【讨论】:

        【解决方案4】:

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

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

        【讨论】:

          猜你喜欢
          • 2012-05-21
          • 1970-01-01
          • 1970-01-01
          • 2011-08-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-06-25
          • 2011-05-15
          相关资源
          最近更新 更多