以下sql是a,b两张表通过关联条件id修改a表值,如果b表有重复数据记录,选第一条更新,红色条件为附加限制条件,具体视情况而定;

UPDATE a SET
name = b.fname,
pwd = b.lname
FROM b
WHERE a.id = b.id
AND a.id in (2,3)

以下sql为查询单表中重复记录;

select * from b t1 where t1.fname in  (select t2.fname from b t2 group by t2.fname having count(*) > 1)

以下为转载SQL语句,删除掉重复项只保留一条,提示(如果表没有主键,导致ID重复,可利用rownum来做判断保留min(rownum)),下边也有函数处理方法

在几千条记录里,存在着些相同的记录,如何能用SQL语句,删除掉重复的呢
1、查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断 
select * from people 
where peopleId in (select peopleId from people group by peopleId having count(peopleId) > 1) 

2、删除表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断,只留有rowid最小的记录 
delete from people 
where   peopleName in (select peopleName    from people group by peopleName      having count(peopleName) > 1) 
and   peopleId not in (select min(peopleId) from people group by peopleName     having count(peopleName)>1) 

3、查找表中多余的重复记录(多个字段) 
select * from vitae a 
where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1) 

4、删除表中多余的重复记录(多个字段),只留有rowid最小的记录 
delete from vitae a 
where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1) 
and rowid not in (select min(rowid) from vitae group by peopleId,seq having count(*)>1) 

5、查找表中多余的重复记录(多个字段),不包含rowid最小的记录 
select * from vitae a 
where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1) 
and rowid not in (select min(rowid) from vitae group by peopleId,seq having count(*)>1)

6.消除一个字段的左边的第一位:

update tableName set [Title]=Right([Title],(len([Title])-1)) where Title like '村%'

7.消除一个字段的右边的第一位:

update tableName set [Title]=left([Title],(len([Title])-1)) where Title like '%村'

8.假删除表中多余的重复记录(多个字段),不包含rowid最小的记录 
update vitae set ispass=-1
where peopleId in (select peopleId from vitae group by peopleId

postgresql 删除ID重复数据

原来表设计没有主键导致SQL重复执行时会产生多条一模一样的主键,现在需要对原来的表建立主键,需要对ID重复的数据进行删除,只保留一条虽然数据完全一致,但好在pgsql数据库提供了ctid的隐藏列,根据此列可以把只保留最小ctid的相同数据行。于是写了以下存储过程来处理。方便多了。再也不错这种问题了。

CREATE OR REPLACE FUNCTION delete_repeat(tablename varchar)
RETURNS bigint AS
$BODY$
DECLARE
rec RECORD;
sql varchar;
BEGIN
RAISE INFO '处理表名:%', tablename;
IF NOT exists(select * from pg_class where relname = tablename) then
RAISE INFO '处理表不存在:%', tablename;
RETURN -1;
END IF;

FOR rec in EXECUTE('select id from '||tablename||' group by id having count(id) > 1') LOOP
RAISE INFO 'id:%', rec.id;
sql := 'delete from ' || tablename || ' where id = ''' || rec.id|| ''' and
ctid <> (select min(ctid) from ' || tablename || ' where id = ''' || rec.id|| ''')';
execute sql;
RAISE INFO 'sql:%', sql;
END LOOP;
RETURN 1;
END;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;

运行select delete_repeat('tablename');

SQL根据B表内容修改A表内容,查询表中重复记录,删除掉重复项只保留一条的更多相关文章

  1. 用SQL语句,删除掉重复项只保留一条

    用SQL语句,删除掉重复项只保留一条 在几千条记录里,存在着些相同的记录,如何能用SQL语句,删除掉重复的呢1.查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断 select ...

  2. SQL语句--删除掉重复项只保留一条

    用SQL语句,删除掉重复项只保留一条 在几千条记录里,存在着些相同的记录,如何能用SQL语句,删除掉重复的呢1.查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断 select ...

  3. 转 用SQL语句,删除掉重复项只保留一条

    用SQL语句,删除掉重复项只保留一条 用SQL语句,删除掉重复项只保留一条 在几千条记录里,存在着些相同的记录,如何能用SQL语句,删除掉重复的呢1.查找表中多余的重复记录,重复记录是根据单个字段(p ...

  4. SQL删除重复数据只保留一条

    用SQL语句,删除掉重复项只保留一条 在几千条记录里,存在着些相同的记录,如何能用SQL语句,删除掉重复的呢 1.查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断 select ...

  5. sql 重复数据只保留一条

    用SQL语句,删除掉重复项只保留一条在几千条记录里,存在着些相同的记录,如何能用SQL语句,删除掉重复的呢1.查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断 select * ...

  6. Oralce中SQL删除重复数据只保留一条(转)

    用SQL语句,删除掉重复项只保留一条 在几千条记录里,存在着些相同的记录,如何能用SQL语句,删除掉重复的呢 .查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断 select ...

  7. 【转】SQL删除重复记录,只保留其中一条

    SQL:删除重复数据,只保留一条用SQL语句,删除掉重复项只保留一条在几千条记录里,存在着些相同的记录,如何能用SQL语句,删除掉重复的呢 1.查找表中多余的重复记录,重复记录是根据单个字段(peop ...

  8. SQL查找 删除重复数据只保留一条

    --用SQL语句,删除掉重复项只保留一条 --在几千条记录里,存在着些相同的记录,如何能用SQL语句,删除掉重复的呢 --1.查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断 ...

  9. sql语句(删除重复数据只保留一条)

    用SQL语句,删除掉重复项只保留一条 在几千条记录里,存在着些相同的记录,如何能用SQL语句,删除掉重复的呢 1.查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断 select ...

随机推荐

  1. 图像处理------K-Means算法演示

    一:数学原理 K-Means算法的作者是MacQueen, 基本的数学原理很容易理解,假设有一个像素 数据集P.我们要根据值不同将它分为两个基本的数据集合Cluster1, Cluster2,使 用K ...

  2. Caused by: java.sql.SQLException: Operand should contain 1 column(s)

    1.错误描述 [ERROR:]2015-05-05 15:48:55,847 [异常拦截] org.hibernate.exception.DataException: error executing ...

  3. java.sql.SQLException: Access denied for user 'sa'@'localhost' (using password: NO)

    1.错误描述 INFO:2015-05-01 16:53:29[main] - HHH000228: Running hbm2ddl schema update INFO:2015-05-01 16: ...

  4. JavaScript常用对象有哪些

    JavaScript常用对象有哪些 1.String 2.Date 3.Math 4.Array 5.Number 6.Boolean

  5. WDF驱动的编译、调试、安装

    编译和调试使用WDK编译,源代码应包括wdf.h,ntddk.h以及KMDF_VERSION=1,编译使用/GS.KMDF包括以下库:1). WdfDriverEntry.lib(编译时绑定):驱动入 ...

  6. TypeError: Error #1006: value 不是函数。

    1.错误原因 TypeError: Error #1006: value 不是函数. at BasicChart/dataFunc()[E:\Flash Builder\Map\src\BasicCh ...

  7. 如何登录mysql? cmd怎么连接mysql数据库||从MYSQL客户端登录MYSQL

    1 2 3 4 5 6 7 分步阅读 Mysql开源数据库,任何人都可以下载安装使用.那么安装好的mysql如何登陆连接mysql数据库呢?本经验咗嚛介绍几种常见的方法 工具/原料   mysql 连 ...

  8. 自定义WIZ文档模板

    WIZ文档模板 1.在wiz笔记里面新建一个笔记,并将其做成一个模板 例子: 2.该作为模板的笔记制作完成后,右键-高级-另存为  导出为html格式 3.将导出的文件和文件夹(有时候只有一个htm文 ...

  9. Dynamics 365 Online用户密码三问及其解答

    本人微信和易信公众号: 微软动态CRM专家罗勇 ,回复264或者20170903可方便获取本文,同时可以在第一间得到我发布的最新的博文信息,follow me!我的网站是 www.luoyong.me ...

  10. linux用户和群组

    1.用户的主要群组和次要群组   切换用户:su -username 查看群组:#vi /etc/passwd         //主要群组                  #vi /etc/gro ...