求一SQL语句 ( 积分: 100 )

  • 主题发起人 主题发起人 冷涯
  • 开始时间 开始时间

冷涯

Unregistered / Unconfirmed
GUEST, unregistred user!
表结果如下:
id1 name1 id2 name2
01 aaa 11 aaa
01 bbb 11 bbb
01 ccc 11 ccc
......
我想在得到此表结果的基础上,把ID1,ID2这两列完全相同的行过滤得只剩其中一行,任意哪一行都可以,请问用一条SQL语句怎么实现呢?
 
把ID1,ID2这两列完全相同的行过滤得只剩其中一行这句话不好理解,ID1和ID2只是两个字段,字段相同和行完全相同有什么关系,还是请楼主说明白点.
 
id1 name1 id2 name1
01 aaa 11 aaa
01 bbb 11 bbb
01 ccc 11 ccc
......

举例来说,以上三行因为每行的ID1和ID2和值都相同,也就是剩下两列的值不同.
我就是想得到当碰到ID1和ID2相同,有多行记录时,只取其中的一条记录.
 
那你是想取哪一条记录!!
 
帮项一下
 
select top 1 * from (select * from table a,(select distinct id1,id2 from table)as b where a.id1=b.id1 and a.id2=b.id2)
 
取哪一条嘛就随便了,主要就是想看看如何用一条语句来实现这个功能的.
原本用:
select DISTINCT ID1,ID2 from 表;

的话能把其它行过滤掉,但显示不出name1,name2字段的值.
水平有限,想了同条语句都实现不了,请大家看看.
 
to:tom_zhxc1794

你写的这个与我说的想了好几条语句都实现不了的其中一种写法一样,最后得到的结果又和原表一样了.
select * from table a,(select distinct id1,id2 from table)as b where a.id1=b.id1 and a.id2=b.id2
要是表里就这个三行数据,我直接写一个TOP 1不就行了吗?
请再看看我在第三楼的说明.
还是要谢谢你的热心回复.
 
select id1,max(name1),id2,max(name2)--min() also can work here.
from table_name
group by id1,id2
 
楼主是要实现这样的效果吧?

id1 name1 id2 name1
01 aaa 11 aaa
bbb bbb
ccc ccc
02 ddd 22 ddd
eee eee
 
不好意思,各位,实际我想要的结果就是:
01 aaa 11 aaa

虽然大家回答的都不是我想要的,但总算是热心肠.现在散分了.
问题我用三条语句去实现了,再次感谢.
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
454
import
I
D
回复
0
查看
1K
DelphiTeacher的专栏
D
I
回复
0
查看
629
import
I
后退
顶部