关于DISTINCT的问题

北京菠菜 2003-12-12 07:43:07
表temp中有字段personid,relationid,name,sex

我想实现的功能是,从表中读出personid,relationid,name这三个字段中不完全相同的记录,同时还想加入sex字段,怎么办?

我以前这样写的Select Distinct personid,relationid,name from temp 但是这样不能加入sex了
...全文
10 9 打赏 收藏 举报
写回复
9 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
zjcxc 元老 2003-12-13
--下面是数据测试

--测试数据
declare @t table(personid int,relationid int,name varchar(1),sex varchar(2))
insert into @t
select 1,1,1,'男'
union all select 1,1,1,'女'
union all select 1,2,3,'男'
union all select 1,3,4,'男'

--方法1.如果表中就这几个字段,可以用这种方法
select personid,relationid,name,sex=min(sex)
from @t group by personid,relationid,name

--方法2.适用一表中还有其他字段的情况
select * from @t a
where sex=(select top 1 sex from @t
where personid=a.personid and relationid=a.relationid and name=a.name)

/*--测试结果
方法1.
personid relationid name sex
----------- ----------- ---- ----
1 1 1 男
1 2 3 男
1 3 4 男

(所影响的行数为 3 行)

方法2.
personid relationid name sex
----------- ----------- ---- ----
1 1 1 男
1 2 3 男
1 3 4 男

(所影响的行数为 3 行)

--*/
  • 打赏
  • 举报
回复
zjcxc 元老 2003-12-13
--方法2.适用一表中还有其他字段的情况
select * from 表 a
where sex=(select top 1 sex from 表
where personid=a.personid and relationid=a.relationid and name=a.name)
  • 打赏
  • 举报
回复
zjcxc 元老 2003-12-13
select personid,relationid,name,sex=min(sex)
from 表 group by personid,relationid,name

  • 打赏
  • 举报
回复
dlpseeyou 2003-12-13
select personid,relationid,name,sex from temp group by personid,relationid,name
  • 打赏
  • 举报
回复
北京菠菜 2003-12-13
不对啊,还是出不来我想要的结果

我的表中的数据时这样的

personid relationid name sex
1 1 1 男
1 1 1 女
1 2 3 男
1 3 4 男


我想的结果是只获得三条记录,即将(1 1 1 女)这条去掉
  • 打赏
  • 举报
回复
CrazyFor 2003-12-12
select personid,relationid,name,sex from table group by personid,relationid,name,sex
  • 打赏
  • 举报
回复
binshan 2003-12-12
select a.* from temp as a inner join (Select Distinct personid,relationid,name from temp) as b on a.personid=b.personid and a.relationid=b.relationid and a.name=b.name
  • 打赏
  • 举报
回复
txlicenhe 2003-12-12
select * from temp a
where sex = ( select max(sex) from temp where personid = a.personid
and relationid = a.relationid and name = a.name )

  • 打赏
  • 举报
回复
tiny_yan 2003-12-12
select a.* from temp as a,(Select Distinct personid,relationid,name from temp) as b where a.personid=b.personid and a.relationid=b.relationid and a.name=b.name
  • 打赏
  • 举报
回复
相关推荐
发帖
MS-SQL Server
加入

3.3w+

社区成员

MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
申请成为版主
帖子事件
创建了帖子
2003-12-12 07:43
社区公告
暂无公告