如何从同一个表中选择多个id

yas*_*sar 2 mysql join foreign-key

这是我的问题的简化版本。我有这些表:

主桌

id - 姓名 - 姓氏 - 父亲的名字 - 母亲的名字

姓名

id - 名称

姓氏

id - 姓氏


我想查询主表,但我想从其他表中获取姓名、父亲姓名和母亲姓名的 ID。我想要类似的东西;

SELECT 
    'id from names table that matches record name' 
    , 'id from surnames table that matches record surname' 
    , 'id from names table that matches record fathers name' 
    , 'id from names table that matches record mothers name'
FROM master_table
Run Code Online (Sandbox Code Playgroud)

我的问题是我不知道如何多次加入同一个表。

sev*_*ist 6

您可以通过在 FROM 语句中为表添加别名来“多次加入同一个表”,例如 SELECT xyz FROM names AS n1(其中 n1 是表 [names] 的别名)。您可以通过对同一个表使用不同的别名,根据需要多次引用同一个表,它将被视为一组“不同”的数据。

然后,您需要在各种别名之间加入以获得所需的条件,例如“与记录姓氏匹配的姓氏”。

正如上面的评论者所说,结构不是很清楚,但你最终会得到类似的东西:

SELECT name, s1.surname, s2.surname from names AS n1
JOIN surnames AS s1 ON n1.mothersname = s1.surname
JOIN surnames AS s2 ON n1.fathersname = s2.surname
Run Code Online (Sandbox Code Playgroud)

我确定连接不完全是这样,因为您似乎有姓名和姓氏的“中间”表(这本身可能是一个设计问题)但上面应该说明如何在一个表中多次使用同一个表询问。