2016-04-08 28 views
0

私はID 51のMySQL DISTINCT 2つの列と同じテーブルを選択し

ID | name | sender_id | reciever_id | time 
1 | hjhjnk | 51  | 2   | SOMETIME 
2 | hjhjnk | 2   | 51   | SOMETIME 
3 | hjhjnk | 51  | 2   | SOMETIME 
4 | hjhjnk | 51  | 2   | SOMETIME 
5 | hjhjnk | 51  | 3   | SOMETIME 
6 | hjhjnk | 6   | 51   | SOMETIME 
7 | hjhjnk | 55  | 2   | SOMETIME 

に平行であり、他の人のIDを(外部キー)をフェッチしようとしている現在、私は二回クエリを使用する必要があります。

SELECT DISTINCT `reciever_id` FROM `message` WHERE `sender_id` LIKE 51 
SELECT DISTINCT `sender_id` FROM `message` WHERE `reciever_id` LIKE 51 

私は2,3および6 を持つことができるように、私はもしそうであれば、その後どのように、そうでない場合は、なぜない?クエリは、これを達成することができ選抜

ご協力いただければ幸いです。単一のクエリにそれらを組み合わせること

おかげ

答えて

1

最も簡単な方法は、労働組合を使用することです:

SELECT DISTINCT `reciever_id` FROM `message` WHERE `sender_id` =51 
Union 
SELECT DISTINCT `sender_id` FROM `message` WHERE `reciever_id` =51 

あなたが同様にwhere句で選択リストとor状態で条件式を使用することができ、それはパフォーマンスの観点からは実際には効果がありません。

+0

ありがとうございますが、receiver_idから2,3だけsender_idに何も与えません。 –

+0

次に、正しい方法でコピーしなかったか、別のデータでクエリを実行しています。私はちょうどあなたの2つのクエリを1つにマージしました。 – Shadow

関連する問題