[英]SQL query help needed joining within a table
我有一個名為babynames
的表,看起來有點像這樣:
firstname |sex |year |count
Bob |M| 2010| 150
Bob |M| 2009| 100
Bob |M| 2008| 122
Bob |F| 2007| 2
Bob |F| 2001| 1
我想要做的是獲取一個包含所有男女名字的嬰兒名字的列表,因此我的查詢需要提取表中至少有兩個記錄且至少一個M和一個F的所有名字記錄。
天色已經晚了,我今晚的頭腦不好。 誰能建議一個可以幫助我完成此任務的字符串?
有幾種方法可以解決此問題。 一種方法是在HAVING
子句中使用COUNT(DISTINCT sex) = 2
。 確保使用GROUP BY firstname
。
SELECT
firstname
FROM babynames
GROUP BY firstname
HAVING COUNT(DISTINCT sex) = 2
這是一個演示: http : //sqlfiddle.com/#!2/5d221/1
另一種是針對同一表的2個別名的INNER JOIN
,其中一個尋找M
,另一個尋找F
如果一個名稱不能同時滿足這兩個條件,則無法進行連接,該連接將從輸出中排除。
SELECT
DISTINCT
m.firstname
FROM
babynames f
INNER JOIN babynames m ON f.firstname = m.firstname
WHERE
f.sex = 'F'
AND m.sex = 'M'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.