是否可以从下表中获取正确的person_id?

时间:2019-01-29 16:44:55

标签: mysql

我有一个关系表,其中有两个人之间的关系。

id personA personB description
1    1       3          X
2    4       1          Y
3    3       4          Z
4    1       3          W
5    1       4          V

我对MySQL不太好,但是我的要求是与特定人建立关系。例如。谁是第一个人的朋友,没有任何重复的条目。在这里person1是3和4的朋友。我需要回答:

 person
    3
    4

我尝试过但惨败

SELECT DISTINCT personA,personB FROM tester.relationship where personA=1 OR personB=1;

正在打印具有重复值(1,4&4,1)的人员A和人员B。

personA personB
1        3
4        1
1        4

3 个答案:

答案 0 :(得分:1)

您可以使用联合来执行此操作。在这里,我们选择关系的一个方向,然后再选择另一个方向。 UNIONing结果为我们提供了不同的记录:

SELECT personB FROM tester.relationship where personA=1 
UNION
SELECT personA FROM tester.relationship where personB=1;

或者,您可以在原始查询中使用CASE条件:

SELECT CASE WHEN personA = 1 THEN personB ELSE personA END 
FROM tester.relationship 
WHERE personA=1 OR personB=1;

答案 1 :(得分:1)

尝试一下:

SELECT DISTINCT CASE 
                   WHEN personA = 1 THEN personB 
                   ELSE personA
                END
FROM relationship
WHERE 1 IN (personA, personB)

Demo here

答案 2 :(得分:0)

如果您只寻找朋友

 SELECT DISTINCT personB
 FROM tester.relationship 
 where personA=1 

您不需要OR personB = 1