我对MySQL有疑问。我有这张桌子:

ID      Name
------  ------------
1       Peter
2       John
3       Carl
4       William


记录根据该表链接:

Name          LinkedName
------------  --------------
Peter         Carl
Peter         William
Carl          John



-彼得与卡尔和威廉有关
-卡尔与约翰有关

根据该表,如何创建此表:

ID1     ID2
------  ------------
1       3
1       4
3       2


我尝试过使用两个JOIN,例如

SELECT *
  FROM PersonLinks T
       JOIN Persons W
          ON T.Name = W.Word
       JOIN Persons W2
          ON T.LinkedName = W2.Word;


但是我的服务器在这样的查询后没有响应。
我真的希望有人能在这里为我提供帮助。谢谢。

最佳答案

考虑具有ID和Names的第一个表称为Names,具有关系的第二个表称为LinkedName。

您应该使用以下查询:

SELECT N1.ID AS ID1, N2.ID AS ID2
FROM @LinkedNames LN
LEFT OUTER JOIN @Names N1 ON N1.Name = LN.Name
LEFT OUTER JOIN @Names N2 ON N2.Name = LN.LinkedName


经过测试可以得出正确的结果。

关于mysql - 为n:m关系创建表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7657227/

10-08 23:06