2017-11-24 7 views
0

ログインするユーザーに接続するランダムユーザープロファイル(既に接続されているメンバーを除く)を表示する必要があるネットワーキングサイトを開発しています。私は1つののメンバーというテーブルを持っています。このテーブルには、memberid、firstname、lastnameというフィールドがあります。私は接続の別のテーブルを持っています。このテーブルには、memberidとfriendidというフィールドがあります。mysql joinは別のテーブルで一致するレコードを除外します

接続テーブルで左結合を使用すると、私は必要のない接続されたメンバーのみのプロファイルを取得します。ログインしているユーザーと接続していないメンバーテーブルからプロファイルを表示したいだけです

答えて

2

を使用してを使用せずにこれを達成できます。

select *from 
members 
where 
members.memberid not in (select memberid 
         from connections 
         ) 
; 

上記のクエリは、単に接続に含まれていないメンバーIDの情報を表示することを意味します。

EDIT:

すでにLeft joinを使用しましたので。ここLeft joinでこのタスクを達成するためのクエリは次のとおりです。

select m.* 
from members m 
left join connections c 
on m.id = c.id 
where c.id is null; 

はそれが役に立てば幸い!

+0

より高速なNOT IN節以外の代替手段はありますか? – TechMech

+0

編集した回答を試す –

+0

ありがとう!それは動作します:) – TechMech

関連する問題