Sol tabloda eşleştirilmemiş satırlar için SQL Ortak sorgusu

İki masa aldım, sfuser ve üyelik

sfuser 139 ve üyelik tablosu 50

Herhangi bir projeye üye olmayanları seçmek için sorguya ihtiyacım var, yani 89 üye

İşte benim sorgu

select sfuser.id,sfuser.username,sfuser.email from sfuser INNER JOIN projectmembership ON sfuser.id = projectmembership.member_id ;

Ancak üye olduğum 50 kişiyi tam tersi şekilde istiyorum

Nazikçe biraz ışık at

Saygılarımla sathish

1

7 cevap

select 
sfuser.id,
sfuser.username,
sfuser.email 
from sfuser 
LEFT JOIN projectmembership ON sfuser.id = projectmembership.member_id
WHERE 
projectmembership.member_id is NULL

Projectmembership tablosunda olmayan tüm kullanıcıları iade etmelidir.

3
katma
Çok teşekkürler darius ve abhik
katma yazar user3264858, kaynak

INNER JOIN, yalnızca iki tabloya uyan satırlar üretecektir. Sola birleştirme yapabilir ve boş kayıtları filtreleyebilirsiniz. gibi bir şey:

SELECT sfuser.id,
sfuser.username,
sfuser.email
FROM sfuser LEFT JOIN projectmembership ON sfuser.id = projectmembership.member_id
WHERE (projectmembership.member_id is null);
1
katma

Eğer sfuser kayıtlarının proje üyelik tablosunda birden fazla tekrarı olabilirse, dış birleştirmeyi unutma - VAR DEĞİL, istediğiniz şey:

select sid,
       username,
       email
from   sfuser
where  not exists (
         select null
         from   projectmembership
         where  sfuser.id = projectmembership.member_id);
1
katma

Eğer sfuser kayıtlarının proje üyelik tablosunda birden fazla tekrarı olabilirse, dış birleştirmeyi unutma - VAR DEĞİL, istediğiniz şey:

select sid,
       username,
       email
from   sfuser
where  not exists (
         select null
         from   projectmembership
         where  sfuser.id = projectmembership.member_id);
1
katma

Eğer sfuser kayıtlarının proje üyelik tablosunda birden fazla tekrarı olabilirse, dış birleştirmeyi unutma - VAR DEĞİL, istediğiniz şey:

select sid,
       username,
       email
from   sfuser
where  not exists (
         select null
         from   projectmembership
         where  sfuser.id = projectmembership.member_id);
1
katma

Bir iç birleşim, birleşimin yapıldığı değerlerin iki tablo arasında paylaşıldığı tüm satırları döndürür. (Bkz. bu tablo )

Aradığın şey sol bir birleşim, yani, soldaki tablodaki, sağdaki ile eşleşmeyen tüm satırlar.

select sfuser.id,
  sfuser.username,
  sfuser.email 
from sfuser 
LEFT JOIN projectmembership 
  ON sfuser.id = projectmembership.member_id
1
katma

Bir iç birleşim, birleşimin yapıldığı değerlerin iki tablo arasında paylaşıldığı tüm satırları döndürür. (Bkz. bu tablo )

Aradığın şey sol bir birleşim, yani, soldaki tablodaki, sağdaki ile eşleşmeyen tüm satırlar.

select sfuser.id,
  sfuser.username,
  sfuser.email 
from sfuser 
LEFT JOIN projectmembership 
  ON sfuser.id = projectmembership.member_id
1
katma