Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 确定返回的top结果的总数_Mysql_Sql Order By_Sum - Fatal编程技术网

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

我想从一个查询中确定两件事:

  • 表中最常用的列
  • 查询表时定位此列的次数
  • 示例表:

    user_id some_field 1 data 2 data 1 data 上面的查询根据上面显示的示例表返回“1”。现在,我希望能够返回“2”,表示在表中找到用户id(1)的总次数

    这可能吗

    谢谢


    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;