我有一个数据库表users
,里面有很多名字和性别,我需要找到性别最常见的名字吗?
| name | sex |
----------------------------
| Foo Bar | male |
| Foo Boq | male |
| Plo Boa | male |
| Loo Baa | female |
| Boo Faa | female |
| Boo Sar | female |
我能想到的最好的东西是(例如男性)
SELECT name, COUNT(*) totalCount
FROM users WHERE sex='male'
GROUP BY name
ORDER BY totalCount DESC
LIMIT 1
我希望的结果是
Foo
之后我意识到并没有考虑到姓氏。这张表中有太多数据供我尝试分离数据(除非我能以相对简单的方式做到这一点?)
是否可以使用REGEX或'$name%'
的某些排列(使用PHP运行查询!)
谢谢! : - )
答案 0 :(得分:2)
您可以在SUBSTRING_INDEX(name,' ',1)
中使用GROUP BY
,因为名字列中的空格用名字列中的空格分隔,并在评论中由op确认
SELECT name, COUNT(*) totalCount
FROM table1
WHERE sex='male'
GROUP BY SUBSTRING_INDEX(name,' ',1)
ORDER BY totalCount DESC
LIMIT 1