簡體   English   中英

如何返回聯接表中所有不匹配的行,如果匹配則檢查條件?

[英]How to return all the rows which has not match in join table and if it had match check the condition?

何時返回表User所有行

1. a row has not any match with join table ex **UserDetails**
2. a row has a match in **UserDetails**, check some condition ex: user location is **IND**

示例表

     User
     -----------------------
     id   name
     -----------------------
     1    Hearaman
     2    Ramse
     3    Temmy
     4    Robert

     UserDetails
     -----------------------------
     id   user_id     location
     1    3           USA
     2    4           IND

     Expected results
     --------------------------
     id    name        location
     --------------------------
     1     Hearaman    null
     2     Ramse       null
     4     Robert      IND

您可以使用left join並進行過濾

select u.id, u.name, ud.location
from User u 
left join UserDetails ud on ud.user_id = u.id 
where ud.user_id is null or 
      ud.location = 'IND';

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM