Mysql 确定返回的top结果的总数
我想从一个查询中确定两件事:Mysql 确定返回的top结果的总数,mysql,sql-order-by,sum,Mysql,Sql Order By,Sum,我想从一个查询中确定两件事: 表中最常用的列 查询表时定位此列的次数 示例表: user_id some_field 1 data 2 data 1 data 上面的查询根据上面显示的示例表返回“1”。现在,我希望能够返回“2”,表示在表中找到用户id(1)的总次数 这可能吗 谢谢 Evan您可以在选择列表中包括计数(*): SELECT user_id, count(*) as totaltim
Evan您可以在选择列表中包括
计数(*)
:
SELECT user_id, count(*) as totaltimes from table_name
GROUP BY user_id ORDER BY count(*) DESC;
如果您只想要第一个:
SELECT user_id, count(*) as totaltimes from table_name
GROUP BY user_id ORDER BY count(*) DESC LIMIT 1;
我感谢你的回应!不过我有个问题。“totaltimes”在这里有什么意义吗?还有,为什么要使用“Order by 2”而不是count(*)?@Evan:是的-totaltimes只是输出的别名,可以是任何内容(如果其中有特殊字符,则需要使用反勾号进行转义)。在本例中,ORDERBY 2仅引用SELECT列表中的第二列。为清楚起见,计数(*)可能更好。我打字时很懒,会修改的。好吧,我会试试看,等它工作后再回来选择。同一个用户id的“某些”字段中的数据是否总是相同的?不,它们并不总是相同的。@Mark Wilkins解决方案就是您要找的解决方案。如果是相同的,我建议您省略同一用户id的多个条目,而是使用计数器列
SELECT user_id, count(*) as totaltimes from table_name
GROUP BY user_id ORDER BY count(*) DESC LIMIT 1;