SQL数据库需要知道某列是有重复数据的即不止一条数据,怎么写查询代码?

Name Address
小明 江苏
小李 上海
小华 江苏
需要获取第一三条数据,不是直接写where address = 江苏 因为数据很多 我并不知道哪一条数据这列有重复数据。

关于你提到的问题可以使用关键字distinct来解决
distinct关键字是用来除去重复数据

如下:

id name
1 张三
2 王三
3 李四
4 张三
2 王三

select distinct id,name from t1
id name
1 张三
2 王三
3 李四
4 张三
select distinct name from t1
name
张三
王三
李四追问

我想要得到的是有重复的,比如你的例子我想要得到的是
张三
王三
张三
王三

追答

没明白楼主说的意思 能明确点么,你这里的追问只有四个字段, 你的意思是只想找重复数据 不是重复的不要么?

追问

就是这个意思,只找该字段有重复的数据,没有重复的不需要。

追答

这样的话你可以用
lqefn写的在oracle和sql server下都能运行。
有一个表叫“表1” ,里面有8个字段a、b、c、d、e、f、g、h,实现
表里只要a、c、e三个字段完全一样的记录显示出来(显示的结果集要求所有字段都显示)

select * from 表1 a
where exists(select 1 from 表1 b where a.a = b.a and a.b = b.b and a.c = b.c and a.rowidb.rowid)

自己参考一下吧

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-04-14
你的需求描述的不是太明白,可以试试分组
第2个回答  2015-04-14
先用group by取到count大于1的address,然后取这些address的数据
select * from t where address in(select address,count(address) from t group by address having
count(address)>1);
第3个回答  2015-04-14
问题描述不是很清楚,如果按题目所说,查某列是否存在重复记录,可以用

select 列A,count(1) as num from mytable group by 列A order by num desc
查询结果中,num数量>=2的都是列A有重复的

select 列A,列B,count(1) as num from mytable group by 列A,列B order by num desc
查询结果中,num数量>=2的都是 列A,列B,同时有重复的
-----试试如下-------
select * from mytable where address in (select address from
(select address ,COUNT(1) as num from mytable group by address ) k where k.num>=2)
相似回答