`

group by与distinct的区别

    博客分类:
  • DB
 
阅读更多

举例来说可能方便一点。 
A表 
id num 
a 1 
b 2 
c 3 
a 4 
c 7 
d 3 
e 5 

如果只选出id列,用distinct和group by 一样的。 
select distinct(id) from A; 
id 
a 
b 
c 
d 
e; 
select id from A group by id; 
id 
a 
b 
c 
d 
e; 
不同之处可能在于group by有排序功能。 
但是如果需要加上另一列num,结果不同。 
group by 是分组语句,如果用 
select id,num from A group by id,num; 
这样的结果在本例中与不加group by是一样的,因为num各个不同。 
但是如果 
select id,num from A group by id; 
注意该语句是错误语句,因为num没有使用聚组函数,例如:sum(求和),avg(求平均数) 
select id,sum(num) from A group by id; 
id sum(num) 
a 5 
b 2 
c 10 
d 3 
e 5 

用distinct不显示重复的行。 
在本例中 
select distinct id,num from A;的结果也和不加distinct一致。 
因为id,num没有重复的行,而不是只看id。 

 

 

group by 功能更强大一些,另外推荐使用group by。 
因为distinct会导致全表扫描,而group by如果索引建的 
恰当的话,会有性能上的提高。

 

 SELECT DISTINCT user_id
FROM TRANSACTIONS


SELECT  user_id,COUNT(*) AS num
FROM TRANSACTIONS
GROUP BY  user_id
 

 

------------

分享到:
评论

相关推荐

    Mysql中distinct与group by的去重方面的区别

    在MySQL数据库中,`DISTINCT` 和 `GROUP BY` 是两个非常重要的SQL关键字,它们都可以用来处理数据的去重问题,但在实际应用中,两者的使用场景和效果有所差异。 首先,`DISTINCT` 关键字的主要作用是去除查询结果中...

    用C#实现对DataTable的JOIN,GROUP BY,FILTER,UNIONALL,DISTINCT

    用C#实现对DataTable的JOIN,GROUP BY,FILTER,UNIONALL,DISTINCT

    oracle中使用group by优化distinct

    首先,理解`DISTINCT`与`GROUP BY`的区别。`DISTINCT`用于返回不重复的行,而`GROUP BY`则用于对数据进行分组并计算每个组的聚合函数(如COUNT、SUM、AVG等)。在某些情况下,`GROUP BY`可以提供与`DISTINCT`类似的...

    MySQL中distinct与group by之间的性能进行比较

    在MySQL数据库中,`DISTINCT` 和 `GROUP BY` 是两个用于数据去重的语句,但它们在功能和性能上有显著的区别。这次的测试主要比较了这两种方法在不同条件下的执行效率,尤其是在数据量较大的情况下。 首先,`...

    MySQL中distinct语句的基本原理及其与group by的比较

    在内部,`DISTINCT`的实现与`GROUP BY`相似,但在处理结果集时有一些关键区别。 当MySQL执行`DISTINCT`查询时,它首先会对数据进行分组,就像`GROUP BY`一样,但每个分组只选择一条记录返回。在某些情况下,如果...

    使用GROUP BY的时候如何统计记录条数 COUNT(*) DISTINCT

    总结来说,当需要在使用GROUP BY进行分组的同时统计记录的条数时,应该根据需要选择COUNT(*)或COUNT(DISTINCT column_name)。若要统计不同记录的数量,必须使用COUNT(DISTINCT column_name),并且在处理大量数据时,...

    MySQL中distinct与group by语句的一些比较及用法讲解

    - `GROUP BY` 可以与`LIMIT`一起使用,但需要注意`LIMIT`是应用于`GROUP BY`后的结果集,如测试四所示,它限制了返回的分组数量,而不是原始数据的行数。 在效率方面,通常情况下,`GROUP BY` 比 `DISTINCT` 更...

    group by用法.doc

    `GROUP BY` 语句是SQL中用于对数据进行分组的重要工具,通常与聚合函数如`COUNT`, `SUM`, `AVG`, `MAX`, `MIN`等一起使用。其基本概念是根据一个或多个列的值将数据分为不同的组,然后对每个组应用聚合函数以得出每...

    distinct 多列问题结合group by的解决方法

    `GROUP BY`用于将数据按照一个或多个列进行分组,通常与聚合函数(如`COUNT`, `SUM`, `AVG`, `MAX`, `MIN`)一起使用,计算每个组的统计信息。然而,当`DISTINCT`和`GROUP BY`结合使用时,它们可以实现更复杂的数据...

    使用Distinct查询.rar

    `DISTINCT`通常与`GROUP BY`和聚合函数(如`COUNT`, `SUM`, `AVG`, `MIN`, `MAX`)一起使用,用于计算每个分组的唯一值。例如,计算每个部门的员工数量: ```sql SELECT DISTINCT department, COUNT(*) AS employee...

    group by 语法大全,内附列子

    ### Group By 语法详解与应用实例 在数据库查询语言SQL中,`GROUP BY`语句是一种非常强大的工具,它能够帮助我们对数据进行分组处理,以便更好地进行数据分析和汇总。下面将详细介绍`GROUP BY`的基本语法、常用场景...

    MySQL中索引优化distinct语句及distinct的多字段操作

    MySQL通常使用GROUPBY(本质上是排序动作)完成DISTINCT操作,如果DISTINCT操作和ORDERBY操作组合使用,通常会用到临时表.这样会影响性能. 在一些情况下,MySQL可以使用索引优化DISTINCT操作,但需要活学活用.本文涉及一个...

    【DISTINCT】优化之MySQL官方文档翻译

    #### 三、DISTINCT与GROUP BY的关系 在大多数情况下,`DISTINCT`子句可以被视为一种特殊的`GROUP BY`实例。例如,以下两个查询是等效的: ```sql SELECT DISTINCT c1, c2, c3 FROM t1 WHERE c1 > const; SELECT c1...

    Group BY 的另一种写法

    这种写法通过先找出所有唯一的`column1`和`column2`组合,然后与原始表进行连接,避免了直接在大表上使用`GROUP BY`的开销。 此外,SQL中的窗口函数(如ROW_NUMBER(), RANK(), DENSE_RANK()等)也可以在不使用`...

    distinct的使用.docx

    在更复杂的查询中,`DISTINCT`可以配合`WHERE`子句、`JOIN`操作以及`GROUP BY`来进一步过滤和分组数据。例如,如果你想找出每个部门的唯一职位,可以这样做: ```sql SELECT department, DISTINCT job_title FROM ...

Global site tag (gtag.js) - Google Analytics