4

私が欲しいものを理解するために以下を参照してください:

------------------------------
   Friend       | User 
------------------------------
     2          |  1 
     3          |  2 
     2          |  5
     4          |  2 
------------------------------

value を検索すると、以下のよう2に検索結果に関連する値が返され、と が返されます。FriendUser

--------------------------
      Friends of 2 
--------------------------
        1   - (from column User ) 
        3   - (from column Friend) 
        5   - (from column user ) 
        4   = (from column friend )  

以下のような1列の検索結果が必要です。

--------------------------
      Friends of 2 
--------------------------
        1  
        3   
        5   
        4   

SQL Server で SELECT クエリを使用してこれを行うにはどうすればよいですか?

4

4 に答える 4

8
SELECT Friend FROM MyTable WHERE User = 2
UNION
SELECT User FROM MyTable WHERE Friend = 2;
于 2013-07-01T10:32:00.990 に答える
1
select case Friend when 2 then User else Friend end
FROM table 
where User = 2 
or Friend = 2;
于 2013-07-01T10:34:00.920 に答える
1
Create Table #MyTable(id int identity,FriendID int,UserID int)

Insert into #MyTable values(2,1),(3,2),(2,5),(4,2)

Declare @SearchUserID int=2

select (Case Friendid when @SearchUserID then userID else FriendID end) as [Friends] from #MyTable where @SearchUserID in(Friendid,UserID)

drop Table #MyTable
于 2013-07-01T10:37:47.553 に答える
0

COALESCE 式のもう 1 つのオプション

SELECT COALESCE(CASE WHEN t.Friend = 2 THEN t.[User] END,
                CASE WHEN t.[User] = 2 THEN t.Friend END) AS [Friends of 2]
FROM dbo.Friend t
WHERE t.Friend = 2 OR t.[User] = 2

の例を参照してくださいSQLFiddle

于 2013-07-01T10:41:31.577 に答える