sql重复数据只取一条记录

id 姓名 职业
1 张三 学生
2 李四 学生
3 张三 程序员
4 李四 教师
5 王五 小姐
要求结果:
id 姓名 职业
3 张三 程序员
4 李四 教师
5 王五 小姐
相同姓名的区ID最大的那个

1、SQL SELECT DISTINCT 语句

在表中,可能会包含重复值。这并不成问题,不过,仅仅列出不同(distinct)的值。

关键词 DISTINCT 用于返回唯一不同的值。

语法:

    SELECT DISTINCT 列名称 FROM 表名称

使用 DISTINCT 关键词

SELECT DISTINCT Company FROM Orders


2、子查询限制返回结果

SELECT * FROM TestData 
WHERE
id IN 

--根据Data分类获取数据最小ID列表 
select min(id) from TestData 
group by Data 
)

温馨提示:内容为网友见解,仅供参考
第1个回答  2015-10-03
select distinct(籍贯) from 学生信息 --去除重复记录 distinct(不相同).查询去除籍贯重复的信息

第2个回答  2011-06-10
我还是觉得 这样做好像是错的。
ID 姓名 职业
1 张三 学生
。。。。
3 张三 程序员

首先 ID 这个 应该是主键 不不会 重复的
不管有多少个人 叫张三 ,你的ID都是不同的。你的职业可以相同也可以不相同,难道还能要求人家性别相同或者不相同。就2个性别,人妖我不知道算不算 ,但是加起来 也就三个。

所有 我觉得你现在要搞明白什么可以重复什么不可以重复。
SQL 代码 上面 也有,但是 这个表的查询 有必要吗?
第3个回答  2011-06-09
以姓名为范围,以ID排逆序,取最大值。

with v as (select 姓名, row_number() over (partition by 姓名 order by id desc) as rk, id, 职业
from tableA)
select id,姓名,职业
from v where rk=1
第4个回答  2015-11-15
select * from 表名
where id in
select id from
(
select max(id) as id ,姓名, from 表名 group by 姓名
) as as 表2
相似回答