我使用MySQL和MyISAM引擎。假设我有以下2个数据库表:
TableX的
ID, Person1ID, Person2ID
人
ID, Name
我的查询应该如何,因为我有2个指向同一个表的外键? 我一直试图加入赌桌,但运气不好......
我想选择
ID, Name, Name
答案 0 :(得分:3)
在您的情况下,您需要两次加入Person
表,这是一个示例:
SELECT j.ID,
p.Name AS `Person 1 Name`,
p2.Name AS `Person 2 Name`
FROM TableX j
JOIN Person p
ON p.ID = j.Person1ID
JOIN Person p2
ON p2.ID = j.Person2ID
答案 1 :(得分:1)
这是一个执行JOIN操作以从Person表中检索相关行的查询示例:
SELECT t.ID
, t.Person1ID
, t.Person2ID
, p1.ID AS `p1_ID`
, p1.Name AS `p1_Name`
, p2.ID AS `p2_ID`
, p2.Name AS `p2_Name`
FROM TableX t
LEFT
JOIN Person p1
ON p1.ID = t.Person1ID
LEFT
JOIN Person p2
ON p2.ID = t.Person2ID
ORDER BY t.ID
如果要排除Person表中没有匹配行的行,可以删除LEFT
关键字以替换"外部"加入"内部"加入。