精华内容
下载资源
问答
  • Sql去重查询数据

    万次阅读 2019-06-10 17:17:20
    最近在工作过程中,面试过程中,部分求职者或者同事,对sql怎么去重查询,不是太熟练 今天下午忙里偷闲, 整理了一下 其实sql基本的查询 ,还是蛮有意思, 下面是我大致整理的几种去重查询 1.存在2条一样的数据,...

    最近在工作过程中,面试过程中, 部分求职者或者同事,对sql怎么去重查询,不是太熟练

    今天下午忙里偷闲, 整理了一下 

    其实sql基本的查询 ,还是蛮有意思,   下面是我大致整理的几种去重查询 

    1.存在2条一样的数据,  使用distinct

    eg:   select distinct * from table(表名) where  条件

     

    2.存在部分字段相同(有key, id  即唯一键) 如:id列不同,id类型为int,自增字段,使用聚合函数max或其他

    eg:   select * from  table  where  id  in (

      select  max(id)  from  table  group by  [去重复字段表1,.....] having COUNT(*)>1

      )

     3.没有唯一键 ID,  需要借助创建临时表,来解决

     eg:  select  indentity (int,1,1) as  id , * into newtable(临时表)  from table

     select * from newtable where  id in  (select max(id)  from newtable group by [去重复字段表1,.....]) drop table newtable

    4. id列不同,id类型为uniqueidentifier

    ① 使用row_number() over() he partition by  给每一组添加行号

    select *,(row_number() Over(partition By'分组字段' order By '排序字段')) RowNum from

    (select * from table where '分组字段'in (

    select '分组字段' from table group by '分组字段' having count(*) >1)t1)

     

    ②将行号=1的数据插入临时表中

    Select * into #A from (‘上面的sql语句’) t2 where t2.RowNum=1

     

    注意:

    1.row_number() over()是给行加行号的

    2.partition  by用于给结果集分组,如果没有指定那么它把整个结果集作为一个分组 

     详细如: https://blog.csdn.net/wuyoudeyuer/article/details/91387434

     

     

     

     

     

    展开全文
  • sqlserver 去重查询distinct

    千次阅读 2017-10-19 15:55:41
    sqlserver

    下面先来看看例子:

    table表

    字段1 字段2
    id name
    1 a
    2 b
    3 c
    4 c
    5 b

    库结构大概这样,这只是一个简单的例子,实际情况会复杂得多。

    比如我想用一条语句查询得到name不重复的所有数据,那就必须

    使用distinct去掉多余的重复记录。

    select distinct name from table

    得到的结果是:


    name
    a

    c

    好像达到效果了,可是,我想要得到的是id值呢?改一下查询语句吧:

    select distinct name, id from table

    结果会是:


    id name
    1 a
    2 b
    3 c
    4 c
    5 b

    distinct怎么没起作用?作用是起了的,不过他同时作用了两个

    字段,也就是必须得id与name都相同的才会被排除

    我们再改改查询语句:

    select id, distinct name from table

    很遗憾,除了错误信息你什么也得不到,distinct必须放在开头。难到不能把distinct放到where条件里?能,照样报错。


    下面方法可行:

    select *, count(distinct name) from table group by name

    结果:

    id name count(distinct name)
    1 a 1
    2 b 1
    3 c 1

    最后一项是多余的,不用管就行了,目的达到

    group by 必须放在 order by 和 limit之前,不然会报错

    转载:http://www.jb51.net/article/24717.htm

    展开全文
  • sql去重查询distinct

    2014-11-20 16:00:26
    select DISTINCT `object_id`, t3.width as width, t3.height as height,t3.ismark as ismark, t2.rtime as add_time,t1.add_author as add_...select后面的条件,带t3正常,能去重复的,加了t2,t1就没法去重复的了
  • sql去重 查询

    2019-05-27 15:10:32
    例子: select distinct * from table(表名) where (条件) 2.存在部分字段相同的纪录(有主键id即唯一键) 如果是这种情况的话用distinct是过滤不了的,这就要用到主键id的唯一性特点及group by分组 例子: ...

    有重复数据主要有一下2种情况:
    1.存在两条完全相同的纪录
    这是最简单的一种情况,用关键字distinct就可以去掉
    例子: select distinct * from table(表名) where (条件)
    2.存在部分字段相同的纪录(有主键id即唯一键)
    如果是这种情况的话用distinct是过滤不了的,这就要用到主键id的唯一性特点及group by分组
    例子:
    select * from table where id in (select max(id) from table group by [去除重复的字段名列表,…])

    代码亲测:
    SELECT
    startSole,
    type,
    stock_no stockNo,
    time,
    operator,
    stock,
    outbound_type AS outboundType,
    warehouse_type AS warehouseType,
    order_no AS orderNo,
    warehouse_name AS warehouseName,
    warehouser,
    out_type AS outType,
    remark,
    is_del AS isDel
    FROM
    stock_operation
    WHERE
    id IN ( SELECT max( id ) FROM stock_operation GROUP BY startSole )

    展开全文
  • SQL 部分字段去重查询

    千次阅读 2019-05-18 17:12:22
    个别与其他表相关联的字段本该一个数值只出现一次,但由于多人合作,数据较混乱,又不知哪些有用那些没有,不能随便删数据,所以苦恼了好久,各种百度,最终终于查询到了解决办法,现记录如下: 在要删除的有重复...

    前段时间公司项目遇到一个比较棘手的问题,由于项目是多人合作完成且个别数据表会涉及到多人进行操作导致数据混乱,个别与其他表相关联的字段本该一个数值只出现一次,但由于多人合作,数据较混乱,又不知哪些有用那些没有,不能随便删数据,所以苦恼了好久,各种百度,最终终于查询到了解决办法,现记录如下:

    在要删除的有重复数据中存在几种情况:
    1.存在两条完全相同的纪录
    这是最简单的一种情况,用关键字distinct就可以去掉。
    example: select distinct * from table(表名) where (条件)
    2.存在部分字段相同的纪录(有主键id即唯一键)
    如果是这种情况的话用distinct是过滤不了的,这就要用到主键id的唯一性特点及group by分组
    example:
    select * from table where id in (select max(id) from table group by [去除重复的字段名列表,…])
    3.没有唯一键ID
    example:
    select identity(int1,1) as id,* into newtable(临时表) from table
    select * from newtable where id in (select max(id) from newtable group by [去除重复的字段名列表,…])

    该项目为一个关于银行贷款的项目,借款人在用户端界面填写相关借款信息并提交,银行工作人员通过银行端界面查询到借款人相关信息,通过后台操作更改贷款人借款状态,借款人可在用户端查询每笔贷款的贷款状态等信息。我所遇到的问题就是借款状态所关联的借款表Loan(借款人所查看的借款信息列表)和借款状态表LoanProgress(查询每笔借款所处借款状态)的列表查询问题。下面将项目从简处理以备日后重温查看。

    项目中所涉及到的列表:

    Loan 借款表

    Id 借款人/企业id 借款人类型 借款金额 创建人id 创建时间 修改人id 修改时间
    101 202 0 100 901 2019-01-03 807 2019-01-17
    102 303 1 200 901 2019-01-09 803 2019-01-11
    103 301 1 500 902 2019-01-13 801 2019-02-03
    104 201 0 10 901 2019-01-10 809 2019-01-29
    105 302 1 20 908 2019-01-20 801 2019-02-03

    Borrower 借款人表

    Id 借款人名称
    201 柯西
    202 泰勒

    BorrowingEnterprise 借款企业表

    Id 借款企业名称
    301 兰尼斯特公司
    302 史达克公司
    303 克里斯安公司

    LoanProgress 借款进度表

    Id 借款人/企业id 借款人类型 借款表id 借款进度
    401 302 1 105 审核中
    402 201 0 104 审核完成
    403 202 0 101 放款中
    404 303 1 102 审核完成
    405 201 0 104 放款中
    406 301 1 103 审核中
    407 202 0 101 审核完成
    408 302 1 105 审核中
    409 201 0 104 审核完成
    410 303 1 102 审核完成
    411 301 1 103 还款中
    412 303 1 102 审核中
    413 201 0 104 还款中
    414 202 0 101 审核完成
    415 301 1 103 审核完成
    416 202 0 101 审核中
    417 303 1 102 放款中
    418 301 1 103 审核完成

    执行SQL语句:

    		SELECT 
                    t.id,
                    t.借款人/企业id
                    t.借款人类型
                    t.借款金额
                    t.创建人id,
                    t.创建时间,
                    t.修改人id,
                    t.修改时间,
           		  ,(	
    				select 借款进度 
    				from LoanProgress 
    				where Id in (select max(Id) from LoanProgress where 借款表id is not null and 借款表id!='' and 借款表id=t.id  group by 借款表id ) )借款进度 
               	   ,(SELECT 借款人名称 FROM Borrower where id = t. 借款人/企业id) 借款人名称 
            	   ,(SELECT 借款企业名称 FROM BorrowingNterprise where id = t.借款人/企业id) 借款企业名称 
              FROM Loan t 
              where  t.创建人='901'
    

    查询结果如下:

    Id 借款人/企业id 借款人类型 借款金额 创建人id 创建时间 修改人id 修改时间 借款进度 借款人名称 借款企业名称
    101 202 0 100 901 2019-01-03 807 2019-01-17 审核中 泰勒
    102 303 1 200 901 2019-01-09 803 2019-01-11 放款中 克里斯安公司
    104 201 0 10 901 2019-01-10 809 2019-01-29 还款中 柯西

    本文为原创文章,仅为个人拙见,如有任何问题或错误欢迎诸位大神多多指教!!

    展开全文
  • sql查询去重,别名

    2019-04-18 09:52:54
    查询数据 基本语法:select 字段列表/* from 表名 [where 条件]; 完整语法:select [select选项] 字段列表[字段别名]/* from 数据源[where 条件子句] [group by条件子句] [having 子句] [order by 子句] [limit 子句...
  • SQL条件去重

    千次阅读 2016-06-16 15:55:49
    需求:一个表如下:(表名:jojo)要获取ccode、ccode_name、cclass相同的指定日期的第一条记录 要获得如下结果:(下图条件是时间>=2015-07-08) SQL语句:select a.id,b.*from jojo ainner join (select ccode,c...
  • SQL数据去重

    千次阅读 2014-05-12 10:57:04
    在几千条记录里,存在着些相同的记录,如何能用SQL语句,删除掉重复的呢 1、查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断 select * from people where peopleId in (select peopleId from ...
  • sql语句去重

    万次阅读 2018-07-27 16:03:41
    有重复数据主要有一下几种情况: ...example: select distinct * from table(表名) where (条件)   CREATE TABLE 临时表 AS (select distinct * from 表名);  drop table 正式表;  insert...
  • SQL高效去重语句

    千次阅读 2016-01-04 11:14:34
    Sql去重语句  海量数据(百万以上),其中有些全部字段都相同,有些部分字段相同,怎样高效去除重复? 如果要删除手机(mobilePhone),电话(officePhone),邮件(email)同时都相同的数据,以前一直使用这条语句...
  • SQL distinct去重并排序失败

    千次阅读 2017-08-10 13:47:21
    现在我有一个orders表,user_id是用户id,count是...也就是这样正确的SQL查询语句如下:SELECT user_id,MAX(count) as num from orders GROUP BY user_id ORDER BY num desc;思想:用group by 和order by进行去重和排序
  • Hive SQL 数据去重简析

    千次阅读 2017-11-26 20:35:31
    )(选择分区条件中第几条数据输出,若该序列没有,则不输出)   下面以班级成绩表t2 来说明其应用 t2表信息如下: name class s cfe 2 74 dss 1 95 ffd 1 95 fda...
  • sql根据多个字段去重: SELECT title,isbn,author_id ,page_count from dbo.book group by title,isbn,author_id ,page_count 或者: SELECT DISTINCT title,isbn,author_id ,page_count from dbo.book sql根据...
  • Access SQL distinct 去重失效问题

    千次阅读 2018-03-17 21:27:22
    PS:问题原因找到了,确认这是Access的一个BUG,触发条件为 正文字段为备注 (Memo)、使用 LEFT JOIN (子查询)时有时就会出现,解决办法为在出现BUG的语句后再添加一个WHERE子句,例如 SELECT DISTINCT 正文, ...
  • 一、首先看一下原始数据我们现在要对第二行和第三行的customername、linkman、linkmantel这三个字段去重查询要得到的结果肯定只有三行,distinct肯定是不行的也就是这样的效果二、进行分析要想得到这样的效果首先你...
  • sql count()加distinct和条件去重统计

    千次阅读 2021-01-13 10:07:55
    表数据: userid userType ------------------------------------------ A 1 B 1 B 1 C 2 需求:查出userType=1和userType=2的用户数,并且直接用字段展示出来,可能还有很多...去重加上条件查询: select
  • sql查询结果去重

    2020-07-02 13:50:36
    关键字:DISTINCT 1.不加DISTINCT select city_code, city_name from <表名>; 结果: 2.加 DISTINCT select DISTINCT city_code, city_name from <表名>; 结果:
  • sql去重

    千次阅读 2018-12-08 11:28:50
    数据库清洗去重 在数据库里清洗时,会用到DELETE语句进行操作,很多时候需要删除重复记录保存,保存一条。百度之后有些语句会报错,直到发现一个在实战中可以用不会报错的,并且跑起来很快的一条sql语句 DELETE ...
  • sql高效去重重复数据方法

    千次阅读 2016-04-28 11:14:54
    方法源地址 http://bbs.csdn.net/topics/380088407  其中5楼版主的回答
  • 今天上午在调试程序的时候突然web页面突然挂了,查看后台提示发现为“单行查询返回多个行”,典型的有地方在查唯一值的时候出错了,结果查看sql果然有查唯一值的地方,这里sql形如: select a,b,(select c from ...
  • 我一条sql查询出来的数据因为某个字段有不同值,所以整个结果都有重复数据了,现在想只保留一条,不同值那个字段任意保留一条即可。 sql如下:有不同值的字段是这个 rra.assess_status。 求大神帮助 select ...
  • 去重查询,关键字:distinct 使用通配符模糊查询,关键字:like,通配符:% 排序查询(升序、降序),关键字:order by、desc 分组查询,关键字:group by 使用函数,关键字:max、avg 规定要返回的记录的数目...
  • 常规情况下的sql分组统计为: select count(1) from 表 where 条件 group by 字段; 但是有时往往需要添加不同的条件已经去重的统计以上语句就不能满足需求。 解决方案为: 1.添加条件的统计方案: COUNT(CASE ...
  • Sql去重语句

    2018-11-20 19:59:04
    如果要删除手机(mobilePhone),电话(officePhone),邮件(email)同时都相同的数据,以前一直使用这条语句进行去重: delete from 表 where id not in (select max(id) from 表 group by mobilePhone,officePhon...
  • SQL去重

    2015-07-31 15:33:00
     select distinct * from table(表名) where (条件) 2.存在部分字段相同的纪录(有主键id即唯一键)  如果是这种情况的话用distinct是过滤不了的,这就要用到主键id的唯一性特点及group by分组  select...
  • sql 语句查询时去掉重复项: 使用 distinct 去掉重复项: 首先可以明确的看到存在重复的名字,那么接下来就让我们试试使用 distinct 去重吧。 1 select distinct * from Student 咦,怎么没效果呢?原来...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 29,176
精华内容 11,670
关键字:

sql条件去重查询