MySQL查询有2个表

时间:2015-03-11 18:31:08

标签: mysql

我的数据库中有这些表格:

  

Id_People | Name_People       
1米尔顿
       2阿拉贡
   3 Legolas

我和爸爸和儿子一起创建了一个像这样的表:

  

Id_Dad | Id_Son       
1 2
       2 3

如何编写查询以获取包含Son和Dad列共有的ID的记录(例如:上表中的id 2)?

1 个答案:

答案 0 :(得分:0)

效率不高;但它为输出数据提供了更大的灵活性。我们使用自联接和表别名连接到Dad / Son表(我称之为关系),使用INNER连接将保证只返回父亲和儿子的记录。

Select R.*, R2.*
FROM Relationship R
INNER JOIN Relationship R2
 on R.ID_Son = R.ID_Dad

根据所需的现场输出,这是最有效的方式;但它限制了可用于输出的数据。此方法使用相关子查询来获取儿子也是父亲的所有记录。

SELECT R.* 
FROM Relationship R
WHERE EXISTS (SELECT 1 from RelationShip R2 where R.ID_Son = R2.ID_DAD)

在这两种情况下,由于有多个孩子,每位父亲可以返回超过1条记录。但它保证记录既是父亲又是"儿子"