【问题标题】:SQL Joins and Renaming columnsSQL 连接和重命名列
【发布时间】:2014-10-05 21:37:22
【问题描述】:

如果我有三个表,例如dog、cat 和animal,其中animal 的属性是name,我如何加入dog 和cat 并返回两个名称?

结构看起来像这样:

---Dog---
AnimalID char(9)
ChasesID char(9)


---Cat---
AnimalID char(9)


--Animal--
AnimalID char(9)
Name     char(20)

我想在 ChasesID 上加入 Dog 和 Cat(引用 Cat 表中的 AnimalID)并从 Animal 返回这两种动物的名称。

【问题讨论】:

    标签: mysql sql join inner-join renaming


    【解决方案1】:

    我不确定你想用这种方式做什么,但如果你只想获取动物的名字,你可以尝试这样的方法:

    SELECT Animal.Name AS Name
    FROM (SELECT AnimalID FROM Cat
          UNION
          SELECT AnimalID FROM Dog) AS AnimalsUnion
    LEFT JOIN Animal
           ON Animal.AnimalID = AnimalsUnion.AnimalID
    

    它应该可以解决问题..

    【讨论】:

      【解决方案2】:

      为此,您需要两个联接:

      select ad.name as dogname, ac.name as chases
      from dog d join
           animal ad
           on d.animalid = ad.animalid join
           animal ac
           on d.chasesid = ac.animalid;
      

      据我所知,cat 表是多余的。它没有单独的 id,所以你不需要它。您可以直接从animal获取名称。

      【讨论】:

        【解决方案3】:

        您可以在三个表上创建一个简单的联接。

        select c.column1,c.column2 , d.column1 , a.column1 from cat c, dog d, animal a where c.ChasesID = d.ChasesID and c.AnimalID = a.AnimalID;
        

        【讨论】:

          猜你喜欢
          • 2020-10-16
          • 2021-12-03
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多