| 网站首页 | 业界新闻 | 小组 | 交易 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
共有 686 人关注过本帖
标题:表中连续重复字段保留1个记录,是连续重复,不连续的重复保留。
只看楼主 加入收藏
techcai
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2021-4-9
结帖率:0
收藏
已结贴  问题点数:20 回复次数:9 
表中连续重复字段保留1个记录,是连续重复,不连续的重复保留。
比如表a
姓名
---------------
王五
王五
王五
李三
王五
赵四
田强
田强
李三

查询后结果期望是:
姓名
---------------
王五
李三
王五
赵四
田强
李三


sql的select语句怎么写?谢谢回复。
搜索更多相关主题的帖子: 表中 保留 重复 记录 字段 
2021-04-09 15:55
techcai
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2021-4-9
收藏
得分:0 
没有人?
select语句怎么写?谢谢回复。
2021-04-09 16:39
techcai
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2021-4-9
收藏
得分:0 
就是上一条记录和下一条记录的姓名字段比较,如相等就丢弃一条。
2021-04-09 16:42
techcai
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2021-4-9
收藏
得分:0 
那位专家给个提示?非常感谢。
2021-04-10 08:36
techcai
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2021-4-9
收藏
得分:0 
表中连续重复字段保留1个记录,是连续重复,不连续的重复保留。
比如表a
姓名
---------------
王五
王五
王五
李三
王五
赵四
田强
田强
李三

查询后结果期望是:
姓名
---------------
王五
李三
王五
赵四
田强
李三


sql的select语句怎么写?谢谢回复。
2021-04-10 18:19
techcai
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2021-4-9
收藏
得分:0 
这个对我来说有点难,高手应当不费吹灰之力。

在线等。
2021-04-11 12:48
techcai
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2021-4-9
收藏
得分:0 
SELECT 姓名 FROM 表a as a
WHERE EXISTS
(SELECT 姓名 FROM 表a as b WHERE a.姓名 <> b.姓名)
可不可以实现
2021-04-11 18:50
techcai
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2021-4-9
收藏
得分:0 
先抛开sql语法不谈,这里说一下我的问题解决思路
例:
原表 AAABBACCADD,去除连续重复后,期望结果 :ABACAD
方法:
1,取第一条记录A与第二条记录A比较,相等,抛弃第二条记录,
         第一条记录A与再第三条记录A比较,相等,抛弃第三条记录,
         第一条记录A与再第四条记录B比较,不相等,保留第一条记录A,这时,
2,取第四条记录B与地五条记录B比较,相等,抛弃第五条记录,
         第四条记录B与再第六条记录A比较,不相等,保留第四条记录B,这时,
3,取第六条记录A与第七条记录C比较,不相等,保留第六条记录A,这时,
4,取第七条记录C与第八条记录C比较,相等,抛弃第五条记录,
         第七条记录C与第九条记录A比较,不相等,保留第七条记录C,这时,
5,取第九条记录A与第十条记录D比较,不相等,保留第九条记录A,这时,
6,取第十条记录D与第十一条记录D比较,相等,抛弃第十一条记录,
         第十条记录D与第十二条记录比较时遇到记录结尾,不相等,保留第十条记录D,结束

结果集为:ABACAD
2021-04-13 09:13
mywisdom88
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:140
帖 子:2803
专家分:7220
注 册:2015-3-25
收藏
得分:20 
重复,分局部重复和完全重复
局部重复:有N个字段,只有某些字段内容相同,通常,只考虑重要字段
完全重复:就是所有字段内容相同
如:表1(字段1,字段2,字段3,字段4,字段5,字段6)
局部重复:字段1,字段2
select distinct 字段1,字段2 from 表1
去掉“字段1,字段2”重复的内容,保留唯一的,
全部重复:
select distinct 字段1,字段2,字段3,字段4,字段5,字段6 from 表1
2021-04-14 08:46
oldfish96
Rank: 2
等 级:论坛游民
威 望:1
帖 子:16
专家分:17
注 册:2020-7-24
收藏
得分:0 
要加字段id
程序代码:
DECLARE @t TABLE( id INT, name VARCHAR(10))

INSERT @t
VALUES
( 1, '王五' ),
( 2, '王五' ),
( 3, '王五' ),
( 4, '李三' ),
( 5, '王五' ),
( 6, '赵四' ),
( 10, '田强' ),
( 15, '田强' ),
( 18, '李三' )

SELECT * FROM @t AS T
--第一种 
DECLARE @th TABLE( rank1 INT, id INT, name VARCHAR(10))
INSERT @th SELECT ROW_NUMBER() OVER ( ORDER BY T.id ), T.id, T.name FROM @t AS T

SELECT  A.id, A.name
    FROM @th A
         LEFT JOIN @th B ON B.rank1 - 1 = A.rank1
    WHERE A.name <> B.name
          OR B.name IS NULL
--第二种
DECLARE @th2 TABLE( id INT, name VARCHAR(10), GroupKey VARCHAR(20))
INSERT @th2
    SELECT *,
           CONCAT(
               ROW_NUMBER() OVER ( ORDER BY T.id ) - ROW_NUMBER() OVER ( PARTITION BY T.name ORDER BY T.id ),
               '|',
               T.name) groupkey
        FROM @t AS T
--SELECT * FROM @th2 AS T

SELECT MAX(T.id) id, MAX(T.name) name FROM @th2 AS T GROUP BY GroupKey ORDER BY id

图片附件: 游客没有浏览图片的权限,请 登录注册


[此贴子已经被作者于2021-4-25 13:52编辑过]

2021-04-25 10:51
快速回复:表中连续重复字段保留1个记录,是连续重复,不连续的重复保留。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.137733 second(s), 9 queries.
Copyright©2004-2021, BCCN.NET, All Rights Reserved