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