2012-02-04 156 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