我正在使用mysql 5.0.51b。 我有一个名为xyz的表。 xyz表有一列abc,location,pqr和lmn 每次将信息发送到特定位置时,其输入都在xyz表中完成。 我想要获取最大信息发送位置的名称。
我尝试的方式: 首先,我计算使用count和group by发送到每个位置的条目数。 现在,问题是让位置的名称具有最大值。
我使用了临时解决方案: 我使用order by子句和limit来获取具有最大值的第一条记录。 但这有一个问题 如果两个位置具有相同的计数,则上述解决方案将仅提供一个位置,而另一个具有相同计数的位置将不会返回。
我想解决这个问题 任何提示都会非常有用 在期待中感谢
答案 0 :(得分:3)
非常感谢所有回答我问题并且没有时间解决问题的人。
但是,我有解决方案:
SELECT count( * ) AS cnt2, location
FROM sms
GROUP BY location
HAVING cnt2 = (
SELECT count( * ) AS cnt
FROM sms
GROUP BY location
ORDER BY cnt DESC
LIMIT 1 );
对http://lists.mysql.com/mysql/203074
的非常重要的提示内部查询为您提供最大计数,外部查询将每个计数与最大计数进行比较。
答案 1 :(得分:2)
Select MAX(cnt.Total) from
(select count( Name)as Total from Gk_RegUser_answer_rel group by Reg_UserId) As cnt
答案 2 :(得分:0)
尝试这个有趣的解决方案 -
SELECT x.* FROM xyz x
JOIN (
SELECT GROUP_CONCAT(location) locations FROM (
SELECT location, COUNT(*) cnt FROM xyz GROUP BY location ORDER BY COUNT(*)) t
GROUP BY cnt DESC
LIMIT 1
) t
ON FIND_IN_SET(x.location, t.locations);
答案 3 :(得分:0)
SELECT COUNT(*), `location` FROM `xyz` GROUP BY `location`
以上查询将为您提供特定位置的信息计数。
如果这不是您要找的,您能提供一些样本数据和预期输出吗?