SQL查询帮助需要在表中加入

DRL*_*DRL 1 sql

我有一个名为babynamesabit 的表,如下所示:

firstname |sex |year |count 
Bob |M| 2010| 150
Bob |M| 2009| 100
Bob |M| 2008| 122
Bob |F| 2007| 2
Bob |F| 2001| 1
Run Code Online (Sandbox Code Playgroud)

我想要做的是获得所有男女名字的列表,所以我的查询需要提取表中至少有两个记录的所有名字记录,并且至少有一个M和一个F.

现在已经很晚了,我今晚心情不好.任何人都可以建议一个字符串可以帮助我完成这项任务吗?

Mic*_*ski 5

有几种方法可以解决这个问题.一种是COUNT(DISTINCT sex) = 2HAVING条款中使用a .一定要GROUP BY firstname.

SELECT 
  firstname
FROM babynames
GROUP BY firstname
HAVING COUNT(DISTINCT sex) = 2
Run Code Online (Sandbox Code Playgroud)

这是一个演示:http://sqlfiddle.com/#!2/5d221/1

另一个会INNER JOIN反对同一个表的2个别名,其中一个寻找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'
Run Code Online (Sandbox Code Playgroud)

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