admin

Mysql用法
## 查看某个字段重复的个数//查看id重复的个数 SELECT id,COUNT(*) ...
扫描右侧二维码阅读全文
15
2018/10

Mysql用法

mysqlimg.jpg## 查看某个字段重复的个数

//查看id重复的个数
    SELECT
        id,COUNT(*)
    FROM
        ni_shortnews_se
    GROUP BY
        id
    HAVING COUNT(*) > 1

执行结果:
SQL结果

查看另一个表不存在的数据

    SELECT
        *
    FROM
        A
    WHERE
        id
    NOT  IN
    (
        SELECT id FROM B
    );

或者
    SELECT
        *
    FROM
        A
    WHERE NOT  EXISTS  (
        SELECT
            1
        FROM
            B
        WHERE
            B.id = A.id
    );

或者
    SELECT
        A.*
    FROM
        A
    LEFT JOIN
        B
    ON
        (A.id = B.id)
    WHERE
      b.id  IS  NULL

去重

在使用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;

来自

distinct 与 group by的区别

distinct简单来说就是用来去重的,而group by的设计目的则是用来聚合统计的,两者在能够实现的功能上有些相同之处,但应该仔细区分,因为用错场景的话,效率相差可以倍计。

单纯的去重操作使用distinct,速度是快于group by的。

distinct
distinct支持单列、多列的去重方式。
单列去重的方式简明易懂,即相同值只保留1个。
多列的去重则是根据指定的去重的列信息来进行,即只有所有指定的列信息都相同,才会被认为是重复的信息。

干巴巴的说不好理解,示例一下:

示例数据表中的数据:
mysql> select * from talk_test;

idnamemobile
1xiao9555555
2xiao6666666
3xiao9888888
4xiao9555555
5xiao6777777

进行单列去重后的结果:

mysql> select distinct(name) from talk_test;
name
xiao9
xiao6

2 rows in set (0.01 sec)

mysql> select distinct(mobile) from talk_test;
mobile
555555
666666
888888
777777

**只会保留指定的列的信息

进行多列去重后的结果:
mysql> select distinct name,mobile from talk_test;

namemobile
xiao9555555
xiao6666666
xiao9888888
xiao6777777

**只有所有指定的列信息都相同,才会被认定为重复的信息

group by使用的频率相对较高,但正如其功能一样,它的目的是用来进行聚合统计的,虽然也可能实现去重的功能,但这并不是它的长项。

来源

最后修改:2018 年 10 月 18 日 08 : 47 PM
如果觉得我的文章对你有用,请随意赞赏

发表评论