菜朵朵 发表于 2009-07-09 21:20

求教distinct问题

本人遇到的问题如下:
假设有一张表a 内含4个字段 a1 a2 a3 a4共有10条记录 其中有两条记录的a2字段数据相同
我想在select这4个字段时 对a2字段使用distinct即distinct(a2)以达到select这张表的全部数据时,a2字段值相同的两条记录任选出一条即可 可在sybase中distinct不能这样用
请问有什么方法能实现以上效果,最好用一条sql语句实现,谢谢

WFCJZ 发表于 2009-07-09 21:42

select distinct a2 from a 难道不行吗?

菜朵朵 发表于 2009-07-10 10:32

我是要select出四个字段的所有记录 但a2字段的重复记录只取一条
就是类似:selecta1,distct(a2),a3,a4 from a (这个语句是错的只是用来说明我的意思)
请问该用一条sql语句该怎么写

chuxu 发表于 2009-07-10 12:52

可以通过
select min(a1) from a where a2=dup_a2 确定唯一的一条记录吗?

如果可以的话,就
select * from a where a2=dup_a2 and a1 in (select min (a1) from a where a2=dup_a2)
union all
select * from a where a2!=dup_a2

camham 发表于 2009-07-10 16:48

原帖由 菜朵朵 于 2009-7-10 10:32 发表 http://bbs3.chinaunix.net/images/common/back.gif
我是要select出四个字段的所有记录 但a2字段的重复记录只取一条
就是类似:selecta1,distct(a2),a3,a4 from a (这个语句是错的只是用来说明我的意思)
请问该用一条sql语句该怎么写

你把你的意思说清楚先吧,让人看不明白。
拿数据出来举例子

菜朵朵 发表于 2009-07-10 21:08

举个例子吧 表a 有 a1a2a3a4 四个字段内容如下
a1    a2    a3    a4
---    ----   ---    ----
1       2      3      4
5       6      7      8
q       2      w   e
z       x      c       v
其中第1条和第3条的的a2字段有重复值
我想select出全部记录但a2字段不能重复也就是第1条和第3条有一条被选出就行无所谓哪一条,
选出后的结果希望能达到如下效果:
a1    a2    a3    a4   
---    ----   ---    ----
1       2      3      4
5       6      7      8
z       x      c       v
或者是
a1    a2    a3    a4
---    ----   ---    ----
5       6      7      8
q       2      w   e
z       x      c       v
请问这语句该怎么写呢??

camham 发表于 2009-07-15 08:57

原帖由 chuxu 于 2009-7-10 12:52 发表 http://bbs3.chinaunix.net/images/common/back.gif
可以通过
select min(a1) from a where a2=dup_a2 确定唯一的一条记录吗?

如果可以的话,就
select * from a where a2=dup_a2 and a1 in (select min (a1) from a where a2=dup_a2)
union all
select * ...


select a2 into #t as dup_a2 from a group by a2 having count(a2)>1
再用上面的办法。
页: [1]
查看完整版本: 求教distinct问题