`

mysql表中获取去除重复的记录

阅读更多
1.构建表和数据
CREATE TABLE `teacher` (
  `ID` bigint(20) NOT NULL COMMENT 'ID',
  `REGNAME` char(200) DEFAULT NULL COMMENT '师教编号',
  `NAME` char(20) NOT NULL COMMENT '教师名称',
  `TYPE` int(1) DEFAULT '0' COMMENT '师教类型(0:内聘,1:外聘)',
  PRIMARY KEY (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO `teacher` VALUES ('10001', 'allen', 'allen', '0');
INSERT INTO `teacher` VALUES ('10002', 'ruby', 'ruby', '0');
INSERT INTO `teacher` VALUES ('10003', 'sharon', 'sharon', '1');
INSERT INTO `teacher` VALUES ('10004', 'alpha', 'alpha', '0');
INSERT INTO `teacher` VALUES ('10005', 'alpha', 'alpha', '0');
INSERT INTO `teacher` VALUES ('10006', 'alpha', 'alpha', '0');

2.数据库记录
mysql> select * from teacher;
+-------+---------+--------+------+
| ID    | REGNAME | NAME   | TYPE |
+-------+---------+--------+------+
| 10001 | allen   | allen  |    0 |
| 10002 | ruby    | ruby   |    0 |
| 10003 | sharon  | sharon |    1 |
| 10004 | alpha   | alpha  |    0 |
| 10005 | alpha   | alpha  |    0 |
| 10006 | alpha   | alpha  |    0 |
+-------+---------+--------+------+
6 rows in set

3.需要获取的记录

+-------+---------+--------+------+
| ID    | REGNAME | NAME   | TYPE |
+-------+---------+--------+------+
| 10001 | allen   | allen  |    0 |
| 10002 | ruby    | ruby   |    0 |
| 10003 | sharon  | sharon |    1 |
| 10004 | alpha   | alpha  |    0 |
| 10005 | alpha   | alpha  |    0 |
+-------+---------+--------+------+

查询语句:mysql> select * from teacher t
where 2>(select count(*) from teacher where REGNAME=t.REGNAME and ID<t.ID);
+-------+---------+--------+------+
| ID    | REGNAME | NAME   | TYPE |
+-------+---------+--------+------+
| 10001 | allen   | allen  |    0 |
| 10002 | ruby    | ruby   |    0 |
| 10003 | sharon  | sharon |    1 |
| 10004 | alpha   | alpha  |    0 |
| 10005 | alpha   | alpha  |    0 |
+-------+---------+--------+------+

5 rows in set
-----------------------------------------------------
解释: 说白了 就是
每条语句都有一个count(*),10001,10002,10003,10004的count(*)都是0,
10005的count(*)是1,10006的count(*)就是2,取大于2的数据,就排除了id是1006的记录。

当检索到id是10006的时候,REGNAME=t.REGNAME 的记录有3条,
而符合这个条件的是ID<t.ID,分别是 10004<10006,10005<10006,
10006不小于1006,
所以当id是1006的时候,count(*)是2。

而表中REGNAME唯一的记录的count(*)是0,因为,举个例子来说,当检索id是10001的记录时, 不存在1001<1001的结果,所以count(*)是0

--------------------
还可以访问 获得更多信息
http://blog.csdn.net/acmain_chm/article/details/4126306
分享到:
评论

相关推荐

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

    SQL语句去掉重复记录,获取重复记录 –查询一个表中有效去掉重复的记录,UserID为自增长主键,RoleID为重复字段 SELECT MIN(UserID) AS UserID, RoleID FROM tmpTable GROUP BY RoleID SELECT RoleID ...

    MySQL命令大全

    例如:删除表 MyClass中编号为 的记录 mysql&gt; delete from MyClass where id=1; 7、修改表中数据:update 表名 set 字段=新值,…where 条件 mysql&gt; update MyClass set name=’Mary’where id=1; 7、在表中...

    MYSQL常用命令大全

    例如:删除表 MyClass中编号为1 的记录 mysql&gt; delete from MyClass where id=1; 7、修改表中数据:update 表名 set 字段=新值,… where 条件 mysql&gt; update MyClass set name='Mary' where id=1; 7、在表中增加字段...

    mysql数据库的基本操作语法

    当主表的记录被从表参照时,主表的记录将不允许删除,如果要删除数据,需要先删除从表中依赖该记录的数据, 然后才可以删除主表的数据。还有一种就是级联删除子表数据。 注意:外键约束的参照列,在主表中引用的只能...

    【最新版】navicat150_mysql_en.dmg【亲测可用】最好的MySQL / MariaDB管理和开发工具

    通过获取关键字建议并从编码中去除重复内容,使用“代码完成”和可自定义的代码段快速进行编码。 使用我们专业的对象设计器创建,修改和管理所有数据库对象。使用复杂的数据库设计和建模工具将数据库转换为图形表示...

    sqlserver利用存储过程去除重复行的sql语句

    还是先上代码吧 ,可以先看 SQL语句去掉重复记录,获取重复记录 代码....[dbo].[testim] –删除表 –把不重复记录转存到testim中 select * into [ItemMaster].[dbo].[testim] from [ItemMaster].[dbo].[dat_item_maste

    PHP和MySQL Web开发第4版pdf以及源码

    10.3.2 从多个表中获取数据 10.3.3 以特定的顺序获取数据 10.3.4 分组与合计数据 10.3.5 选择要返回的行 10.3.6 使用子查询 10.4 更新数据库记录 10.5 创建后修改表 10.6 删除数据库中的记录 10.7 表的删除 ...

    MySql基本查询、连接查询、子查询、正则表达查询讲解

    查询数据是指从数据库中的数据表或视图中获取所需要的数据,在mysql中,可以使用SELECT语句来查询数据。根据查询条件的不同,数据库系统会找到不同的数据。 SELECT语句的基本语法格式如下: [sql] view plain copy ...

    PHP和MySQL WEB开发(第4版)

    10.3.2 从多个表中获取数据 10.3.3 以特定的顺序获取数据 10.3.4 分组与合计数据 10.3.5 选择要返回的行 10.3.6 使用子查询 10.4 更新数据库记录 10.5 创建后修改表 10.6 删除数据库中的记录 10.7 表的删除 10.8 ...

    PHP和MySQL Web开发第4版

    10.3.2 从多个表中获取数据 10.3.3 以特定的顺序获取数据 10.3.4 分组与合计数据 10.3.5 选择要返回的行 10.3.6 使用子查询 10.4 更新数据库记录 10.5 创建后修改表 10.6 删除数据库中的记录 10.7 表的删除 ...

    MySQL去重的方法整理

    使用方法:获取id的重复字段的值,利用相同id字段所在的行中,比较出数据不同的字段,删除 除了最小(或最大)的字段所在的该行之外的所有重复的行。一般使用主键来比较,因为主键的值一定是唯一值,绝对不相同。 ...

    PHP开发实战1200例(第1卷).(清华出版.潘凯华.刘中华).part1

    实例129 去除数组中的重复元素 158 实例130 字符串与数组的转换 159 实例131 对数组元素进行随机排序 160 实例132 随机抽取数组中元素 161 实例133 二维数组的输出 162 实例134 获取数组当前的键名和值 162 实例135 ...

    PHP开发实战1200例(第1卷).(清华出版.潘凯华.刘中华).part2

    实例129 去除数组中的重复元素 158 实例130 字符串与数组的转换 159 实例131 对数组元素进行随机排序 160 实例132 随机抽取数组中元素 161 实例133 二维数组的输出 162 实例134 获取数组当前的键名和值 162 实例135 ...

    【最新版】navicat150_premium_en.dmg navicat-premium: 15.0.14【亲测可用】最好的MySQL数据库开发工具

    通过获取关键字建议并从编码中去除重复内容,使用“代码完成”和可自定义的代码段快速进行编码。使用我们的调试组件,例如设置断点,单步执行程序,查看和修改变量值以及检查调用堆栈,可以快速找到并纠正PL / SQL和...

    PHP程序开发范例宝典III

    实例215 显示数据表中的重复记录和记录条数 335 8.8 排序、分组统计 336 实例216 对数据进行降序查询 336 实例217 对数据进行多条件排序 337 实例218 对统计结果进行排序 338 实例219 单列数据分组统计 ...

    python入门到高级全栈工程师培训 第3期 附课件代码

    05 ORM多表操作之多对多添加记录 06 ORM多表操作之多对多查询 07 ORM多表操作之F查询与Q查询 08 ORM的querySet集合对象的特性 第53章 01 admin介绍 02 alex首秀失败 03 自定义admin样式 04 admin补充 05 COOKIE...

    Java开发实战1200例(第1卷).(清华出版.李钟尉.陈丹丹).part3

    实例075 获取字符串中汉字的个数 94 实例076 批量替换某一类字符串 95 实例077 把异常与错误信息显示到窗体中 97 实例078 从字符串中分离文件路径、 文件名及扩展名 98 实例079 判断手机号的合法性 99 实例080 用...

Global site tag (gtag.js) - Google Analytics