sql 怎么查询不重复数据
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql 怎么查询不重复数据相关的知识,希望对你有一定的参考价值。
1、select distinct 查询字段名 。
2、查询from 表名 。
3、设置where 查询条件。
4、输入distinct是去除重复内容的。
其他解决办法:
1、先把不重复数据的id查询出来 通过count()计算 只有数目为1的才是不重复的数据。
2、然后通过in选择出不重复记录的数据。
例子:
统计出a表中name不重复的所有记录
select b.* from table b where b.id in(select a.id from table a group by a.name having
count(a.id) <2)
//其中 name重复的数据的列名。
方法:
select max(字段1) as 字段1,字段2,max(字段3) as 字段3,max(字段4) as 字段4 from 表1 group by 字段2
这样能以 字段2 为关键字,筛选所有不重复记录。
我的表有200多个字段,就这么搞定了。
结果相当于 excel 以单个字段为关键字去重复。 参考技术B select distinct 查询字段名
from 表名
where 查询条件
其中distinct是去除重复内容的本回答被提问者和网友采纳 参考技术C 查询的时候多查一个sum
用group by来分组
最后去掉sum列就行了 参考技术D select distinct 字段名
from 表名
sql 有重复字段的多个表查询时,数据被覆盖怎么解决?
select a.no
,sum(case when a.index = 1 then a.value else 0 end)/count(distinct a.calcdate) as aa
,sum(case when c.index = 5 then c.value else 0 end)/count(distinct c.calcdate) as cc
from A a join C c on a.bid = c.bid
group by a.no
表A和表C字段相同,都有no,index,value,calcdate,现在运行后c的值会覆盖a的值运算
求不会覆盖的方法
,sum(case when a.index = 1 then a.value else 0 end)/count(distinct a.calcdate) as aa
from A
group by a.no
union all
select c.no
,sum(case when c.index = 5 then c.value else 0 end)/count(distinct c.calcdate) as cc
from C
group by C.no追问
运行后没有cc那列,只有no和aa
追答select no
,sum(case when index = 1 then value else 0 end)/count(distinct calcdate) as aa
from A
group by no
union all
select no
,sum(case when index = 5 then value else 0 end)/count(distinct calcdate) as aa
from C
group by no
这样看下数据对不对,上下查询的结果都放同一个字段里面
不行的
追答我后面这个代码运行完是怎么样的,截图看下
以上是关于sql 怎么查询不重复数据的主要内容,如果未能解决你的问题,请参考以下文章