过滤重复记录

create table tb(学校 varchar ( 10 ),年级 int ,班级 varchar ( 10 ),姓名 varchar ( 10 ),性别 varchar ( 10 ),年龄 int )
insert into tb values ( ' 1中 ' ,     1 ,         ' 2班 ' ,   ' ' ,     ' ' ,       20 )
insert into tb values ( ' 2中 ' ,     3 ,         ' 1班 ' ,   ' ' ,     ' ' ,       17 )
insert into tb values ( ' 1中 ' ,     2 ,         ' 2班 ' ,   ' ' ,     ' ' ,       16 )
insert into tb values ( ' 2中 ' ,     3 ,         ' 5班 ' ,   ' ' ,     ' ' ,       15 )
insert into tb values ( ' 2中 ' ,     3 ,         ' 6班 ' ,   ' ' ,     ' ' ,       18 )
go

-- 方法1:
select a. * from tb a where 年龄 = ( select min (年龄) from tb where 姓名 = a.姓名 and 性别 = a.性别) order by a.学校
-- 方法2:
select a. * from tb a where not exists ( select 1 from tb where 姓名 = a.姓名 and 性别 = a.性别 and 年龄 < a.年龄) order by a.学校
-- 方法3:
select a. * from tb a,( select 姓名,性别, min (年龄) 年龄 from tb group by 姓名,性别) b where a.姓名 = b.姓名 and a.性别 = b.性别 and a.年龄 = b.年龄 order by a.学校
-- 方法4:
select a. * from tb a inner join ( select 姓名,性别 , min (年龄) 年龄 from tb group by 姓名,性别) b on a.姓名 = b.姓名 and a.性别 = b.性别 and a.年龄 = b.年龄 order by a.学校
-- 方法5
select a. * from tb a where 1 > ( select count ( * ) from tb where 姓名 = a.姓名 and 性别 = a.性别 and 年龄 < a.年龄) order by a.学校

drop table tb

/*
学校         年级          班级         姓名         性别         年龄         
---------- ----------- ---------- ---------- ---------- -----------
1中         2           2班         李          女          16
2中         3           1班         马          男          17
2中         3           5班         张          男          15

(所影响的行数为 3 行)

学校         年级          班级         姓名         性别         年龄         
---------- ----------- ---------- ---------- ---------- -----------
1中         2           2班         李          女          16
2中         3           1班         马          男          17
2中         3           5班         张          男          15

(所影响的行数为 3 行)

学校         年级          班级         姓名         性别         年龄         
---------- ----------- ---------- ---------- ---------- -----------
1中         2           2班         李          女          16
2中         3           1班         马          男          17
2中         3           5班         张          男          15

(所影响的行数为 3 行)

学校         年级          班级         姓名         性别         年龄         
---------- ----------- ---------- ---------- ---------- -----------
1中         2           2班         李          女          16
2中         3           1班         马          男          17
2中         3           5班         张          男          15

(所影响的行数为 3 行)

学校         年级          班级         姓名         性别         年龄         
---------- ----------- ---------- ---------- ---------- -----------
1中         2           2班         李          女          16
2中         3           1班         马          男          17
2中         3           5班         张          男          15

(所影响的行数为 3 行)

*/
### 回答1: 您可以使用 MySQL 的 DISTINCT 关键字来过滤掉重复的记录。例如,如果您有一个名为 "users" 的表,其中包含 "name" 和 "email" 两个字段,并且您想要获取所有不同的电子邮件地址,可以使用以下 SQL 查询: ``` SELECT DISTINCT email FROM users; ``` 这将返回一个包含所有不同电子邮件地址的结果集。如果您想要过滤掉重复的记录并根据其他字段进行排序,可以使用 GROUP BY 和 ORDER BY 子句,例如: ``` SELECT name, email FROM users GROUP BY email ORDER BY name ASC; ``` 这将按照姓名的字母顺序排序,返回每个唯一的电子邮件地址以及与之关联的姓名。 ### 回答2: 在MySQL中,可以使用DISTINCT关键字来过滤掉重复的数据。DISTINCT关键字用于查询结果中消除重复的行,只返回唯一的行。 例如,假设有一个名为orders的表,包含以下数据: order_id | customer_id ------------------------ 1 | 100 2 | 200 3 | 100 4 | 300 要过滤掉customer_id重复的行,可以使用以下查询语句: SELECT DISTINCT customer_id FROM orders; 执行以上查询语句后,将返回以下结果: customer_id ----------- 100 200 300 在这个例子中,使用DISTINCT关键字过滤掉了重复的customer_id,只返回了唯一的customer_id。 需要注意的是,DISTINCT关键字适用于所有列,不仅仅局限于单个列。例如,如果要过滤掉customer_id和order_id都重复的行,可以使用以下查询语句: SELECT DISTINCT customer_id, order_id FROM orders; 这样就可以获得customer_id和order_id都是唯一的行。 总之,DISTINCT关键字是在MySQL中过滤重复数据的一种常用方法,可以通过在SELECT语句中使用它来返回唯一的行。 ### 回答3: 在MySQL中,过滤重复记录可以使用DISTINCT关键字来实现。DISTINCT关键字用于查询结果集中的唯一值,去除重复的记录。 例如,假设有一张名为students的表,包含以下若干条记录: | id | name | age | |----|-------|-----| | 1 | Alice | 20 | | 2 | Bob | 22 | | 3 | Alice | 20 | | 4 | Carol | 21 | | 5 | Bob | 22 | 要查询表中所有不重复的姓名,可以使用以下SQL语句: SELECT DISTINCT name FROM students; 执行上述查询后,会得到以下结果: | name | |-------| | Alice | | Bob | | Carol | 这样就过滤掉了重复的姓名记录。 同样地,如果想查询不重复的年龄,可以使用以下SQL语句: SELECT DISTINCT age FROM students; 执行上述查询后,会得到以下结果: | age | |-----| | 20 | | 22 | | 21 | 这样就过滤掉了重复的年龄记录。 总结起来,使用DISTINCT关键字可以帮助我们在MySQL中过滤掉重复的记录,从而得到仅包含唯一值的结果集。通过在SELECT语句中选择要过滤重复的列,我们可以根据需要去除表中重复的数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值