可能重复:
Is there any difference between Group By and DistinctMySQL - GROUP BY和DISTINCT有什么区别?
什么在MySQL查询GROUP BY和DISTINCT之间的区别?
可能重复:
Is there any difference between Group By and DistinctMySQL - GROUP BY和DISTINCT有什么区别?
什么在MySQL查询GROUP BY和DISTINCT之间的区别?
的
Is there any difference between GROUP BY and DISTINCT
复制它已经在这里
讨论如果仍想在这里
井组通过听取和独特都有自己的用途。
Distinct用于过滤满足查询条件的记录中的唯一记录。
Group by子句用于对启动集合函数的数据进行分组,并根据group by子句中的列返回输出。它有其自身的局限性,除了聚合函数外,select查询中的所有列都必须是Group by子句的一部分。
因此,即使您可以使用distinct和group by clause返回的相同数据,也可以使用distinct。见下面的例子
select col1,col2,col3,col4,col5,col6,col7,col8,col9 from table group by col1,col2,col3,col4,col5,col6,col7,col8,col9
可以写成
select distinct col1,col2,col3,col4,col5,col6,col7,col8,col9 from table
它会让你的生活更轻松,当你在选择列表中的多个列。但同时,如果您需要显示总和(col10)以及上面的列,则必须使用分组依据。在这种情况下,明显不会起作用。
如
select col1,col2,col3,col4,col5,col6,col7,col8,col9,sum(col10) from table group by col1,col2,col3,col4,col5,col6,col7,col8,col9
希望这有助于。
感谢您的回复 – sreenavc 2010-12-18 10:06:08
DISTINCT
仅适用于整行。不要误入思维SELECT DISTINCT(A), B
做一些不同的事情。这相当于SELECT DISTINCT A, B
。
另一方面,GROUP BY
创建一个包含在单个列(或多列或任意表达式)中共享每个不同值的所有行的组。使用GROUP BY
,您可以使用聚合函数,如COUNT
和MAX
。这不适用于DISTINCT
。
DISTINCT
。GROUP BY
。只到MySQL应用于另一个不同之处是,除非另行指定GROUP BY
也意味着一个ORDER BY
。下面是如果你使用DISTINCT
会发生什么:
SELECT DISTINCT a FROM table1
结果:
2 1
但使用GROUP BY
结果会在排序顺序:
SELECT a FROM table1 GROUP BY a
结果:
1 2
由于没有使用DISTINCT
进行排序的结果在可以使用的情况下更快。注意:如果您不需要使用GROUP BY
进行排序,则可以添加ORDER BY NULL
以提高性能。
我标记为重复,但后来我意识到这个问题是MySQL的具体问题,另一个是一般的SQL。 MySQL有另一个不是由SQL标准指定的区别。因此,我不再觉得这是完全重复的,但我不能删除我的投票。 – 2010-12-18 10:11:11