【问题标题】: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;