SQL查询去除重复记录

ID 姓名 省份 职业
1 张三 湖南 无业
2 张三 河南 无业
3 李四 深圳 无业
4 赵五 广东 作家

执得查询:select * from 表名 where 职业="无业"
得到的结果是
1 张三 湖南 无业
2 张三 河南 无业
3 李四 深圳 无业

但我想要的结果是:只显示姓名不重复的。是湖南的张三还是河南的张三都无所谓
1 张三 湖南 无业
3 李四 深圳 无业

请问各位高的这条查询语句怎么写?

第1个回答  推荐于2016-11-01
select * from (
select min(id) id from 表名 where 职业="无业"
group by 姓名
) a
inner join 表名 b on a.id = b.id本回答被提问者采纳
第2个回答  2011-03-19
select min(id) as id,姓名,省份,职业 from 表名 group by 姓名,省份,职业
第3个回答  2011-03-19
SELECT
[姓名],
[省份],
[职业]
FROM
(
SELECT
ROW_NUMBER () OVER (PARTITION BY [姓名] ORDER BY [省份]) AS id,
表名.*
FROM
表名
WHERE
[职业] = '无业'
AND ( SELECT
COUNT(1)
FROM
表名 subTopnTest
WHERE
表名.[姓名] = subTopnTest.[姓名]
AND 表名.[职业] = subTopnTest.[职业]
AND 表名 .[省份] < subTopnTest.[省份]
) < 1
) tmpView
WHERE
id = 1

参考资料:http://hi.baidu.com/wangzhiqing999/blog/item/6259589117ca495fd0135e69.html

第4个回答  2011-03-19
select distinct(*)
from 表名
where 职业="无业"

上边distinct 就是去除重复的关键字
第5个回答  2011-03-19
select * from 表名 where id in (select min(id) from 表名 where 职业="无业" group by 姓名)
相似回答