SQL语句删除2条重复数据一条保留一条

-- 任意的测试表


代码如下:

CREATE TABLE test_delete(
name varchar(10),
value INT
);
go
-- 张三100 与 王五80 是有重复的
INSERT INTO test_delete
SELECT '张三', 100
UNION ALL SELECT '张三', 100
UNION ALL SELECT '李四', 80
UNION ALL SELECT '王五', 80
UNION ALL SELECT '王五', 80
UNION ALL SELECT '赵六', 90
UNION ALL SELECT '赵六', 70
go
-- 测试检索数据
SELECT
ROW_NUMBER() OVER (PARTITION BY name, value ORDER BY (SELECT 1) ) AS no,
name,
value
FROM
test_delete

no name value
-------------------- ---------- -----------
1 李四 80
1 王五 80
2 王五 80
1 张三 100
2 张三 100
1 赵六 70
1 赵六 90

--创建视图


代码如下:

CREATE VIEW tmp_view AS
SELECT
ROW_NUMBER() OVER (PARTITION BY name, value ORDER BY (SELECT 1) ) AS no,
name,
value
FROM
test_delete

--删除数据
1> DELETE FROM tmp_view WHERE no != 1
2> go

(2 行受影响)

-- 核对结果
1> www.jb51.net
2> select * from test_delete;
3> go
name value
---------- -----------
张三 100
李四 80
王五 80
赵六 90
赵六 70

(5 行受影响)

作者 tearsmo

(0)

相关推荐

  • thinkphp中多表查询中防止数据重复的sql语句(必看)

    下面先来看看例子: table id name 1 a 2 b 3 c 4 c 5 b 库结构大概这样,这只是一个简单的例子,实际情况会复杂得多. select *, count(distinct name) from table group by name 结果: id name count(distinct name) 1 a 1 2 b 1 3 c 1 最后一 项是多余的,不用管就行了 tp2.0手册   搜索连贯操作 可看到相关的资料 SELECT cat_id, COUNT(*) AS

  • ThinkPHP实现多数据库连接的解决方法

    ThinkPHP实现连接多个数据的时候,如果数据库在同一个服务器里的话只需要这样定义模型: class MembersModel extends Model{ protected $trueTableName = 'members.members'; //数据库名.表名(包含了前缀) } 然后就可以像D("Members");这样实例化模型,像普通模型那样操作了. 但后来发现他的数据库在两个不同的服务器,这样上面的方法就不行了. 这时候就需要使用TP的多数据连接特性了. 对此,查阅官方

  • ThinkPHP查询语句与关联查询用法实例

    本文实例讲述了ThinkPHP查询语句与关联查询用法.分享给大家供大家参考.具体如下: 在thinkphp框架页面中我们可以直接拼写sql查询语句来实现数据库查询读写操作,下面就对此加以实例说明. 普通查询除了字符串查询条件外,数组和对象方式的查询条件是非常常用的,这些是基本查询所必须掌握的. 一.使用数组作为查询条件 复制代码 代码如下: $User = M("User"); //实例化User对象 $condition['name'] = 'thinkphp'; // 把查询条件传

  • ThinkPHP多表联合查询的常用方法

    ThinkPHP中关联查询(即多表联合查询)可以使用 table() 方法或和join方法,具体使用如下例所示: 1.原生查询示例: 复制代码 代码如下: $Model = new Model(); $sql = 'select a.id,a.title,b.content from think_test1 as a, think_test2 as b where a.id=b.id '.$map.' order by a.id '.$sort.' limit '.$p->firstRow.',

  • SQL语句去掉重复记录,获取重复记录

    SQL语句去掉重复记录,获取重复记录  --查询一个表中有效去掉重复的记录,UserID为自增长主键,RoleID为重复字段 SELECT MIN(UserID) AS UserID, RoleID FROM tmpTable GROUP BY RoleID SELECT RoleID FROM tmpTable GROUP BY RoleID HAVING (COUNT(*) > 1) SELECT DISTINCT * FROM tmpTable sql语句查询 sql server acc

  • Mysql删除重复数据并且只保留一条(附实例!)

    (1)以这张表为例: CREATE TABLE `test` ( `id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '注解id', `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '名字', PRIMARY KEY (`id`) USING BTREE ) ENGI

  • mysql查找删除重复数据并只保留一条实例详解

    有这样一张表,表数据及结果如下: school_id school_name total_student test_takers 1239 Abraham Lincoln High School 55 50 1240 Abraham Lincoln High School 70 35 1241 Acalanes High School 120 89 1242 Academy Of The Canyons 30 30 1243 Agoura High School 89 40 1244 Agour

  • SQL语句实现删除重复记录并只保留一条

    复制代码 代码如下: delete WeiBoTopics where Id in(select max(Id) from WeiBoTopics group by WeiBoId,Title having COUNT(*) > 1); SQL:删除重复数据,只保留一条用SQL语句,删除掉重复项只保留一条在几千条记录里,存在着些相同的记录,如何能用SQL语句,删除掉重复的呢 1.查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断 复制代码 代码如下: select * fr

  • MySQL 删除数据库中重复数据方法小结

    刚开始,根据我的想法,这个很简单嘛,上sql语句 delete from zqzrdp where tel in (select min(dpxx_id) from zqzrdp group by tel having count(tel)>1); 执行,报错!!~!~ 异常意为:你不能指定目标表的更新在FROM子句.傻了,MySQL 这样写,不行,让人郁闷. 难倒只能分步操作,蛋疼 以下是网友写的,同样是坑爹的代码,我机器上运行不了. 1. 查询需要删除的记录,会保留一条记录. select

  • mysql查找删除表中重复数据方法总结

    在数据库表里,我们有时候会保存了很多重复的数据,这些重复的数据浪费资源,我们要将其删除掉,应该怎么处理呢?下面来看一下. 先看下我们的表数据,有一些数据是重复的. 要查找重复数据,我们可以使用mysql里的having语句,如图. 执行这个语句后,我们可以看到现在的结果里显示的就是表中重复数据的字段. 要删除这些重复的数据,我们找出这些数据的ID,在select语句里,添加id字段,使用max函数,可以得到重复数据最后面的id. 执行结果如图,得到重复数据的id为8和9. 这样我们就可以使用de

  • sql server删除前1000行数据的方法实例

    近日,sql数据库入门学习群有朋友问到,利用sql如何删除表格的前1000行数据,是否可以实现? 如果是oracle数据库管理软件,实现起来相对简单多了 delete from 表名 where rownum<=1000; 那sql server数据库管理软件呢? sql server里没有rownum功能,小编尝试用select top 先查询看下结果集,select * from 表名: delete from 表名 where 条码 in (select top 10 条码 from 表名

  • sqlserver中重复数据值只取一条的sql语句

    复制代码 代码如下: --建立数据表createtable TestData ( ID int identity(1,1) primary key, Data int, ColA varchar(20), ColB varchar(20) ) go --插入测试数据 declare @counts int declare @i int set @counts = 10000 set @i = 1 while @i<=@counts begin insert TestData (Data,ColA

  • 删除数据库中重复数据的几个方法

    方法一 declare @max integer,@id integer declare cur_rows cursor local for select 主字段,count(*) from 表名 group by 主字段 having count(*) > 1 open cur_rows fetch cur_rows into @id,@max while @@fetch_status=0 begin select @max = @max -1 set rowcount @max delete

  • 用SQL语句解决mysql导入大数据文件的问题

    对于经常使用MYSQL的人来说,phpmyadmin是一个必备的工具.这个工具非常强大,几乎可以完成所有的数据库操作,但是它也有一个弱点,对于往远程服务器上导入较大的数据文件的时候会速度奇慢,甚至出现长期没有响应的情况. 为什么会出现这样的情况呢?当我们选择一个sql数据文件并提交的时候,服务器首先要先把文件上传到服务器,然后才会执行导入代码把数据导入到数据库.我们知道phpmyadmin是通过web方式上传的数据文件,而web方式上传是很不稳定的,尤其是网速慢的时候,这就是为什么我们会有那么多

  • SQL语句技巧:按月统计数据

    表结构如下: qty date ---------------------------------------------- 13 2005/01/17 15 2005/01/19 3 2005/01/25 105 2005/01/27 1 2005/01/31 352 2005/02/03 12 2005/02/04 255 2005/02/07 6 2005/02/18 1 2005/02/19 28 2005/02/21 1 2005/02/22 394 2005/02/23 359 20

随机推荐