注册 登录
编程论坛 SQL Server论坛

SQL 查询求助!

ywyql_84 发布于 2013-09-18 10:30, 1049 次点击
有个TUSER表如下:
ID   A    B    C   D
 1  刘涛  男  30  2684
 2  张海  男  28  3205
 3  王雨  女  25  2315
 4  刘涛  男  30  2684
 5  张海  男  28  3205
 6  陈丽  女  26  1029
 7  陈锋  男  32  3369

如何把重复的显示出来,显示方式如下:

刘涛  男  30  2684
刘涛  男  30  2684
张海  男  28  3205
张海  男  28  3205



如何把不重复的显示出来,过滤掉已经重复的,显示方式如下:

王雨   女   25   2315
陈丽   女   26   1029
陈锋   男   32   3369


11 回复
#2
3037709572013-09-18 12:44
重复的数据sql如下:
SELECT A,B,C,D
FROM TUSER
GROUP BY A,B,C,D
HAVING COUNT(*)>1
 
不重复的数据,过滤掉已经重复的数据,sql如下:
select A,B,C,D from TUSER
where A not in(SELECT A
FROM TUSER
GROUP BY A,B,C,D
HAVING COUNT(*)>1)

[ 本帖最后由 303770957 于 2013-9-18 12:49 编辑 ]
#3
ywyql_842013-09-18 12:48
谢谢版主,SQL 2000的该怎么写啊。
#4
3037709572013-09-18 12:50
SQL 2000的语句也一样。
#5
ywyql_842013-09-18 13:04
哦,那如果加上查询条件呢该怎么写呢?  比如要求 A,B,C的数据完全一样的,假设现在 A,B,C这3个字段中有数据是这样的:
A       B   C      D
刘涛   男   30   1234
张三   女   28   5678
刘涛   男   30   1111
张海   男   28   3205
张海   男   28   2222

要求把数据显示成:

刘涛   男  20   1234
刘涛   男  30   1111
张海   男   28   3205
张海   男   28   2222

要求:只显示A,B,C相同的数据。


#6
3037709572013-09-18 13:17
select A,B,C,D from TUSER
where A in(
SELECT A
FROM TUSER
GROUP BY A,B,C
HAVING COUNT(A)>1
)
#7
ywyql_842013-09-18 13:29
学习了,谢谢楼主!
#8
3037709572013-09-18 13:34
别忘了及时结贴啊!
#9
cai4105795172013-09-18 15:13
版主问下
/*SELECT A,B,C,D
FROM TUSER
GROUP BY A,B,C,D
HAVING COUNT(*)>1
用到别的表就不能用了
我里面只有
cid  cname
1    s6060   
2    s6666
用了就报错了
#10
cai4105795172013-09-18 15:13
报错消息
4145,级别 15,状态 1,第 1 行
在应使用条件的上下文(在 'HAVINGCOUNT' 附近)中指定了非布尔类型的表达式。
#11
tlliqi2013-09-18 15:23
select * from tuser where A in(select A from tuser group by A having count(A)>1)
#12
jxyga1112013-09-20 08:48
你可以看下使用HAVINGCOUNT的要求.
1