2012-04-24 68 views
1

我在我的db中有两行:性别(可以是:1或2“男性,女性”),食物(各种记录如苹果,香蕉,烤面包,意大利面等) 我想把最喜欢的食物分为性别。 我做了这样的事情,但它不会工作:根据两个字段查找大多数重复条目的Mysql查询

$most_male = mysql_query("SELECT * FROM data WHERE sex = '1' GROUP BY foods HAVING count(*) > 2") or die(mysql_error()); //do something 

$most_female= mysql_query("SELECT * FROM data WHERE sex = '2' GROUP BY foods HAVING count(*) > 2") or die(mysql_error()); //do something 

这个代码将只发现这是> 2,但不是最重复的第一个记录。

回答

0

这应有助于:

$most_male = mysql_query("SELECT count(*) as Count,`foods` FROM `data` WHERE `sex` = '1' GROUP BY `foods` ORDER BY `Count` DESC") or die(mysql_error()); 

$most_female = mysql_query("SELECT count(*) as Count,`foods` FROM `data` WHERE `sex` = '0' GROUP BY `foods` ORDER BY `Count` DESC") or die(mysql_error()); 
+0

非常感谢你。 – user1084304 2012-04-30 20:51:47

0
SELECT * 
FROM (SELECT sex, foods, COUNT(*) 
     FROM data 
     WHERE sex=1 
     GROUP BY sex, food 
     HAVING COUNT(*)>2 
     ORDER BY COUNT(*) DESC 
     LIMIT 0,1 
) ilv1 
UNION 
SELECT * 
FROM (SELECT sex, foods, COUNT(*) 
     FROM data 
     WHERE sex=2 
     GROUP BY sex, food 
     HAVING COUNT(*)>2 
     ORDER BY COUNT(*) DESC 
     LIMIT 0,1 
) ilv2