繁体   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