mysql语句 查询某列中不重复数据的所有项

mysql语句 查询某列中不重复数据的所有项,第1张

需求说明

1、我需要查询某列不重复的数据

2、并且显示不重复数据的所有项

sql语句如下

select * from data group by address

如果是仅仅查询某列不重复数据,只需要一列

效果如下

sql语句

select DISTINCT address from data

这里有一个非常非常需要注意的地方:

        SELECT DISTINCT [字段名]后面不能再跟其他的字段,否则检索出来的记录仍然会含有重复项;

        错误写法:

            SELECT DISTINCT [字段名] ,[其他字段名] FROM [表名] WHERE [检索条件字句]

如果我们的记录集里还需要有其他字段值 ,那怎么办呢?

实际上,我们完全可以用另一种办法来解决问题只是需要用到子查询而已!

使用GROUP BY 分组

有一点需要注意:

使用带有GROUP BY字句的查询语句时,在SELECT列表指定的列要么是GROUP BY 指定的列,要么包含聚合组函数

所以用这样一句SQL就可以去掉重复项了:

select * from msg group by terminal_id

这样就得到我们想要的结果集了:

使用count 和distinct(去重)关键字可以查看数据库某列是否有重复项。例如:

select count(discinct(colunmname)) from table_name

如果上述查询统计结果大于count(colunmname),则代表这一列有重复项。

扩展资料

SQL SELECT DISTINCT 语句用法介绍:

在表中,可能会包含重复值。这并不成问题,不过,有时您也许希望仅仅列出不同(distinct)的值。

关键词 DISTINCT 用于返回唯一不同的值。

语法:

SELECT DISTINCT 列名称 FROM 表名称

使用 DISTINCT 关键词,例如要从 "Company" 列中选取所有的值,我们需要使用 SELECT 语句:

SELECT Company FROM Orders

//查询表中的数据 同时某个字段不重复 并且排序

首先做一下查询某个字段不重复(使用group by);

select * from 表名 where group by 不重复的字段名;

在做一下排序,我之前有发过一次排序,这次就做一个简单排序

order by 字段a=0 desc, 字段a desc,字段b desc (a字段等于0在最前面,a字段除了0之外的都为倒叙,b字段倒叙);

这样组合起来就好了

select * from 表名 where group by 不重复的字段名 order by 字段a=0 desc, 字段a desc,字段b desc;


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/6889660.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-29
下一篇 2023-03-29

发表评论

登录后才能评论

评论列表(0条)

保存