close

在fb看到一題有趣的sql題

記錄下來

 
 
 
14 小時 Taipei 台北市附近 
 
大家好~小弟有 SQL 的問題,想請教社團上的大大們!
如圖所示,有兩張實體表與一張關聯表:
[Girl] 為女孩
[Criteria] 為擇偶條件
[GirlCriteria] 為女孩的擇偶條件
想藉由特定條件如 (2,3,5) 來尋找能被滿足擇偶條件的女孩們,即女孩們每一位的擇偶條件不能優於這個特定條件。
請問該如何運用 SQL 達到這樣的查詢目的呢?
謝謝!

沒有自動替代文字。

 

 

幾位大大提出

SELECT * FROM Girl WHERE Girl.ID NOT IN (SELECT DISTINCT(GirlID) FROM Girl_Criteria WHERE CriterialID NOT IN (2, 3, 5))

 

版大則是提出效能更好的

Triton Ho社團管理員 select girl_id from (
select girl_id, sum(case when criteria_id in (2, 3, 5) then 1 else 0 end) as matched, count(1) as total
from girl_criteria

group by girl_id
) t 
where t.matched = t.total

 

太強了,又學到一課

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 學習程式 的頭像
    學習程式

    程式學習日記,如果我幫助了你請讓我知道

    學習程式 發表在 痞客邦 留言(0) 人氣()