1

我有一个名为“child_parent”的表,其中列出了孩子及其父母的 ID,例如,一个名为“person”的表。孩子-父母对是唯一的,一个孩子最多可以有两个父母。

child  parent
3      1
3      2
4      1
7      8

我想要一个“其他”父级(称为“ChildOfpID_OtherParent”)的表,其中所有子级的父 ID(pID)等于 1,如果未列出另一个父级,则为 NULL。所以如果 pID=1,我想要:

child_of_pID   other_parent
3              2
4              NULL

我无法弄清楚如何生成这样的表。

4

2 回答 2

2

此查询将为您的示例返回正确的结果

SELECT p1.child as child_of_pID, p2.parent as other_parent 
FROM child_parent AS p1 
  LEFT JOIN child_parent p2 
  ON p1.parent <> p2.parent AND p1.child = p2.child
WHERE  p1.parent = 1;
于 2015-12-13T15:14:28.803 回答
0

这很好用——我必须更多地研究别名。我认为缺少一个 AS,并推广到 pID(在上面的示例中为 =1),我会写:

SELECT p1.child as child_of_pID, p2.parent as other_parent 
FROM child_parent AS p1 
  LEFT JOIN child_parent AS p2 
  ON p1.parent <> p2.parent AND p1.child = p2.child
WHERE  p1.parent = pID;
于 2015-12-13T22:50:53.190 回答