2012-02-04 154 views
1

说我有一个形象:自定义SQL查询

enter image description here

这表明1有朋友2,3,4和6也是1

的朋友如何获得这些IDS 2,3,4和6是使用SQL

+2

备注:id1和id2是糟糕的列名称。 – 2012-02-04 07:02:28

+1

对不起,刚刚做了测试目的 – vini 2012-02-04 07:03:24

回答

3

取决于一点上DB你使用 - 下面将在MySQL和Oracle合作,也许在MS SQL服务器(不知道):

SELECT 
(CASE WHEN ID1 = 1 THEN ID2 ELSE ID1 END) AS THEFRIENDS 
FROM YOURTABLE WHERE 
ID2 = 1 OR 
ID1 = 1 

这一个作品无处不在,但也许是性能较低:

SELECT ID1 FROM YOURTABLE WHERE ID2 = 1 
UNION 
SELECT ID2 FROM YOURTABLE WHERE ID1 = 1 
+1

@vini很高兴我能帮忙 - 欢迎您:-) – Yahia 2012-02-04 07:20:17

2
select id2 as FriendID from table 
where id1 = 1 
union 
select id1 as FriendID from table 
where id2 = 1 
+0

感谢它的工作=) – vini 2012-02-04 07:20:47

0

使用更具描述性的名称对于初学者

朋友
SELECT * FROM table WHERE id1=1 or id2=1 and id1<>id2 
+0

这不会显示6作为朋友! – Yahia 2012-02-04 07:05:56

+0

我认为这些关系是相同的 – 2012-02-04 07:13:06

+0

从问题中的图像判断,我不认为它们是相同的......编辑版本将显示1也是1的朋友,这不是OP所要求的! – Yahia 2012-02-04 07:13:26