紧急SQL语句问题
现在有一个表A,字段为A B 其中A为关键字段
假设现在表的数据是
A B
B B
C B
D F
G H
最终的查询结果是
A B
D F
G H
其意思就是,假设有个表存储人名和身份证号码,身份证号码是关键字段,但是重名的人肯定很多,现在是如果重名的人很多,只显示该名字对应的第一个身份证号码(重名其实该名字的人有多个,但只显示第一个人的身份证号码),本来这个要求不难,但是规定只能用SELECT语句,不许用游标等等
问题点数:0、回复次数:6Top
1 楼honeyboy(honeyboy)回复于 2003-12-04 15:50:57 得分 0
紧急求助,分数不够可以再给100分读可以,没问题的Top
2 楼zjcxc(邹建)回复于 2003-12-04 15:58:00 得分 0
select A=min(a),B from 表a group by BTop
3 楼zjcxc(邹建)回复于 2003-12-04 15:59:42 得分 0
--下面是数据测试
--测试数据
declare @表A table(A varchar(10),B varchar(10))
insert into @表A
select 'A','B'
union all select 'B','B'
union all select 'C','B'
union all select 'D','F'
union all select 'G','H'
--查询
select A=min(a),B from @表a group by B
/*--测试结果
A B
---------- ----------
A B
D F
G H
(所影响的行数为 3 行)
--*/Top
4 楼zjcxc(邹建)回复于 2003-12-04 16:01:53 得分 0
--如果对于同一个身份证号(B),A字段的值不会重复,也可以用下面的语句,这样,即使表中还有其他字段,也可以得到正确的结果:
select * from 表a a
where A=(select top 1 A from 表a where B=a.B)Top
5 楼tangxc2003(糖糖)回复于 2003-12-04 16:21:26 得分 0
可以用这个语句实现:
select A=min(a),B
from 表
group by B
Top
6 楼zlm18691859(探影.net)回复于 2003-12-04 16:54:13 得分 0
select disinict 人名,身份证号 from 表名
关键是这个参数:disinict 你查查书Top




