一、group by
1、group by 可以将查询结果按照某个字段或多个字段进行分组。字段中值相等的为一组。
2、group by可以和GROUP_CONCAT()函数一起使用。GROUP_CONCAT()函数会把每个分组中指定的字段值都显示出来。
3、group by通常与集合函数一起使用。
① COUNT()函数:用于统计记录的条数。
② SUM()函数:用于计算字段的值的总和。
③ AVG():用于计算字段的值的平均值。
④ max()、min():用于计算查询字段的最小(大)值
如果group by 不与聚合函数一起使用,那么查询结果就是字段取值的分组情况。字段中取值相同的记录为一组,但是只显示该组的第一条记录。
二、总结
1、先排序(内层)再分组去重(外层)
查询score最高的前100个的不同weixin_id
SELECT z.a_id,
z.score,
z.weixin_id
FROM
(
SELECT
intel_id,
weixin_id,
score
FROM
`XXX`
ORDER BY
score DESC
LIMIT 100
) z
GROUP BY
z.weixin_id
在thinkphp 中执行 $list = M()->query($sql);