簡體   English   中英

需要在表中加入SQL查詢幫助

[英]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'

http://sqlfiddle.com/#!2/5d221/3

暫無
暫無

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

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