mysql group by的用法 注意

group by 用法:

官方的解释:select 后面的字段必须出现在 group by 后面, 除非是聚合,sum,或者count

但是如果 是多表联查, SELECT
    c.`name` AS NAME,
    sum(b.uv) AS
VALUE

FROM
    meta.dic_project_category a,
    rpt_program_cat_people b,
    meta.dic_app_category c
WHERE
    a.id = b.`name`
AND a.id > 1
AND b.tag_name = ‘app_prefer1‘
AND c.id = b.tag_value
GROUP BY
    b.tag_value
ORDER BY
    b.uv DESC
LIMIT 10

这个例子。 group by  的是 B表的tag_value,  但是B表这个字段和C表的name,是一 一对应的,所以也可以 。

时间: 2024-10-13 04:19:07

mysql group by的用法 注意的相关文章

mysql group by 的用法解析

1. group by的常规用法 group by的常规用法是配合聚合函数,利用分组信息进行统计,常见的是配合max等聚合函数筛选数据后分析,以及配合having进行筛选后过滤. 聚合函数max select max(user_id),grade from user_info group by grade ; 这条sql的含义很明确,将数据按照grade字段分组,查询每组最大的user_id以及当前组内容.注意,这里分组条件是grade,查询的非聚合条件也是grade.这里不产生冲突. havi

mysql group by 用法解析(详细)

在使用mysql时,有时需要查询出某个字段不重复的记录,虽然mysql提供 有distinct这个关键字来过滤掉多余的重复记录只保留一条,但往往只用它来返回不重复记录的条数,而不是用它来返回不重记录的所有值.其原因是 distinct只能返回它的目标字段,而无法返回其它字段,这个问题让我困扰了很久,用distinct不能解决的话,我只有用二重循环查询来解决,而 这样对于一个数据量非常大的站来说,无疑是会直接影响到效率的.所以我花了很多时间来研究这个问题,网上也查不到解决方案 下面先来看看例子:

mysql中count,GROUP BY的用法(转载)

计算你拥有动物的总数目与“在pet表中有多少行?”是同样的问题,因为每个宠物有一个记录.COUNT(*)函数计算行数,所以计算动物数目的查询应为: mysql> SELECT COUNT(*) FROM pet;+----------+| COUNT(*) |+----------+|        9 |+----------+在前面,你检索了拥有宠物的人的名字.如果你想要知道每个主人有多少宠物,你可以使用COUNT( )函数: mysql> SELECT owner, COUNT(*) F

MySQL Group By 数据分组-- 陷阱

GROUP BY MySQL中 使用 GROUP BY 关键字用于对某个或某些字段查询分组,并返回重复记录的第一条. 语法: SELECT column,... FROM tb_name GROUP BY column1,column2 ... user 表记录如下: uid username 1 小李 2 小张 3 小李 4 小王 5 小李 6 小张 对上面的 user 表做查询如下: SELECT * FROM user GROUP BY username 返回查询结果如下: uid use

SQL中group by的用法

group by即按照给定字段对结果集进行分组,从字面意义上理解就是根据"by"指定的规则对数据进行分组,所谓的分组就是将一个"数据集"划分成若干个"小区域",然后针对若干个"小区域"进行数据处理. group by的写法: 1.select 字段列表/* from 表名 group by 字段列表 2.select 字段列表/* from 表名 group by 字段列表 having 过滤条件 group by的特点: 常

MySQL触发器的正确用法

一.创建触发器的基本语法: CREATE TRIGGER 触发器名 BEFORE|AFTER 触发事件 ON 表名 FOR EACH ROW 触发器语句 触发事件包括:INSERT.UPDATE.DELETE 二.正确案例演示 如果想在sql文件中直接创建触发器,下面为一个完整的sql文件创建(含触发器的创建)示例: use mysql drop database if exists myTest; create database myTest default charset=gb2312; u

Mysql group by top N的问题

在日常工作中,经常要查询分组的前几名.oracle中可以通过row_num来支持查询,mysql暂时不支持row_num.那么如何来完成这个需求呢? 例如: 表中的数据: +--------+-------+-----+ | Person | Group | Age | +--------+-------+-----+ | Bob | 1 | 32 | | Jill | 1 | 34 | | Shawn | 1 | 42 | | Jake | 2 | 29 | | Paul | 2 | 36 |

mysql中UNION ALL用法

MYSQL中的UNION UNION在进行表链接后会筛选掉重复的记录,所以在表链接后会对所产生的结果集进行排序运算,删除重复的记录再返回结果. 举例说明: select * from table1 union select * from table2 这个SQL在运行时先取出两个表的结果,再用排序空间进行排序删除重复的记录,最后返回结果集,如果表数据量大的话可能会导致用磁盘进行排序. MySQL中的UNION ALL UNION ALL只是简单的将两个结果合并后就返回.这样,如果返回的两个结果集

MySQL group replication介绍

"MySQL group replication" group replication是MySQL官方开发的一个开源插件,是实现MySQL高可用集群的一个工具.第一个GA版本正式发布于MySQL5.7.17中:想要使用group replication只需要从官网上下载MySQL5.7.17及以后的版本即可 group replication发布以后,有3种方法来实现MySQL的高可用集群: ①:异步复制 ②:半同步复制 ③:group replication ---注意: 异步复制是