2012-02-07 6 views
1

です.4つのカラム(ID、送信者、受信者、ステータス)を持つテーブルの友人がいて、結合するクエリが必要です(再会、私は単語を英語では知らない)送信者と受信者が同じでどこにテーブルがこのmysqlは2つのカラムを結合します。条件は

| sender | receiver | 
| 2 | 10  | 
| 2 | 8  | 
| 2 | 9  | 
| 6 | 2  | 
| 7 | 3  | 
| 10 | 3  | 

のように見え、クエリの後にそれが表示されます。例えば2 を言うことができます:(最初の3行が表示され、送信者= 2、その後、なぜなら残りの行は示されていません)

| result | 
| 10 | 
| 8 | 
| 9 | 
| 6 | 
+0

、あなただけ含まれるように、結果テーブルに見ることができるように私はそれを必要とするので、送信者または受信者の状態を尊重する値は2に等しいです。 –

+0

質問に気づかないでください。私は私の答えを更新しました。 –

答えて

1

あなたはほとんど正しいキーワードを持っていました。 UNIONはあなたが望むことをさせるでしょう。

SELECT `receiver` as `result` FROM `table` WHERE `sender` = 2 
UNION 
SELECT `sender` as `result` FROM `table` WHERE `receiver` = 2 
+0

なぜ '>'ではなく '='ですか? – danihp

+0

申し訳ありませんが、質問は間違っています。編集された答え。 –

1
select 
case when sender = 2 
then receiver 
else sender 
end 
from friends 
where sender = 2 or receiver = 2 
1

これは、私があなたに意味を持っている願って、あなたのクエリです:

Select sender as result 
from friends 
where receiver = 2 
union 
Select receiver as result 
from friends 
where sender = 2 
0
SELECT * 
FROM 
    (SELECT sender as iResult 
    FROM friends 
    WHERE receiver = 2 
     UNION 
    SELECT receiver as result 
    FROM friends 
    WHERE sender = 2) c 
ORDER BY c.iResult DESC 
関連する問題