MYSQLDISTINCT的简单介绍

http://www.itjxue.com  2023-01-04 19:15  来源:未知  点击次数: 

mysql distinct group by 哪个好

distinct只是将重复的行从结果中出去;

group

by是按指定的列分组,一般这时在select中会用到聚合函数。

distinct是把不同的记录显示出来。

group

by是在查询时先把纪录按照类别分出来再查询。

group

by

必须在查询结果中包含一个聚集函数,而distinct不用。

加了索引

distinct

比没加索引的

distinct

快了

107倍。

加了索引

group

by

比没加索引的

group

by

快了

43倍。

加不加索引

group

by

都比

distinct

快。

建议选

group

by

mysql中distinct怎么用

DISTINCT 用于返回唯一不同的值,去除重复的值。

语法:

SELECT DISTINCT 列名称 FROM 表名称

MySQL中distinct和count(*)的使用方法比较

首先对于MySQL的DISTINCT的关键字的一些用法:

1.在count

不重复的记录的时候能用到,比如SELECT

COUNT(

DISTINCT

id

FROM

tablename;就是计算talbebname表中id不同的记录有多少条。

2,在需要返回记录不同的id的具体值的时候可以用,比如SELECT

DISTINCT

id

FROM

tablename;返回talbebname表中不同的id的具体的值。

3.上面的情况2对于需要返回mysql表中2列以上的结果时会有歧义,比如SELECT

DISTINCT

id,

type

FROM

tablename;实际上返回的是

id与type同时不相同的结果,也就是DISTINCT同时作用了两个字段,必须得id与tyoe都相同的才被排除了,与我们期望的结果不一样。

4.这时候可以考虑使用group_concat函数来进行排除,不过这个mysql函数是在mysql4.1以上才支持的。

5.其实还有另外一种解决方式,就是使用,SELECT

id,

type,

count(DISTINCT

id)

FROM

tablename,虽然这样的返回结果多了一列无用的count数据(或许你就需要这个我说的无用数据),返回的结果是只有id不同的所有结果和上面的4类型可以互补使用,就是看你需要什么样的数据了。

DISTINCT的效率:

SELECT

id,

type,

count(DISTINCT

id)

FROM

tablename;虽然这样的返回结果多了一列无用的count数据(或许你就需要这个我说的无用数据),SELECT

id,

type

from

tablename

group

by

id;这样貌似也可以,用distinct的时候,如果它有索引,mysql会把它转成group

by的方式执行。

MySQL数据库对于COUNT(*)的不同处理会造成不同的结果,比如,

执行:SELECT

COUNT(*)

FROM

tablename;即使对于千万级别的数据mysql也能非常迅速的返回结果。

执行:

SELECT

COUNT(*)

FROM

tablename

WHERE…..;mysql的查询时间开始攀升。

网上查资料得知:当没有WHERE语句对于整个mysql的表进行count运算的时候,MyISAM类型的表中保存有总的行数,而当添加有WHERE限定语句的时候Mysql需要对整个表进行检索,从而得出count的数值,因此加上where条件的查询速度就会很慢了。

以上关于MySQL数据库的distinct以及count(*)的使用就介绍到这里了,希望本次的介绍能够带给您一些收获。

mysql 可以distinct两个字段吗

这个不行,因为 (DISTINCT 字段1,字段2,字段3) 只有(字段1,字段2,字段3)完全相同时才会只显示一个。如果要对(字段1 字段2) 同时DISTINCT 只能select DISTINCT 字段1,字段2 from table;

MysQL中的两个谓词distinct和limit,它们的作用是什么?

MysQL中的两个谓词distinct和limit,它们的作用是LIMIT是MySQL内置函数,其作用是用于限制查询结果的条数。

LIMIT子句可以被用于强制 SELECT 语句返回指定的记录数。LIMIT 接受一个或两个数字参数。参数必须。

是一个整数常量。如果给定两个参数,第一个参数指定第一个返回记录行的偏移量,第二个参数指定返回。

记录行的最大数目。初始记录行的偏移量是 0(而不是 1): 为了与 PostgreSQL 兼容,MySQL 也支持句。

使用说明:

1、如果是用 MySQL +?Apache,使用的又是?FreeBSD?网络操作系统的话,安装时候你应按注意到FreeBSD的版本问题。

在 FreeBSD 的 3.0 以下版本来说,MySQL Source 内含的 MIT-pthread 运行是正常的,但在这版本以上,你必须使用 native threads,也就是加入一个 with-named-thread-libs=-lc_r 的选项。

2、如果在 COMPILE 过程中出了问题,请先检查你的?gcc版本是否在 2.81 版本以上,gmake 版本是否在3.75以上。

3、如果不是版本的问题,那可能是你的内存不足,请使用 ./configure--with-low-memory 来加入。

mysql中去重 用group by优化distinct 用法

在使用 MySQL 时,有时需要查询出某个字段不重复的记录,这时可以使用mysql提供的distinct这个关键字来过滤重复的记录,但是实际中我们往往用distinct来返回不重复字段的条数(count(distinct id)),其原因是distinct只能返回他的目标字段,而无法返回其他字段,例如有如下表user:

用distinct来返回不重复的用户名:select distinct name from user;,结果为:

这样只把不重复的用户名查询出来了,但是用户的id,并没有被查询出来:select distinct name,id from user;,这样的结果为:

distinct name,id 这样的mysql 会认为要过滤掉name和id两个字段都重复的记录,如果sql这样写:select id,distinct name from user,这样mysql会报错,因为distinct必须放在要查询字段的开头。

所以一般distinct用来查询不重复记录的条数。

如果要查询不重复的记录,有时候可以用group by :

select id,name from user group by name;

(责任编辑:IT教学网)

更多

推荐安全产品文章