<font color="red"><strong>这个SQL语句怎么写?(很麻烦的问题)</strong></fon

  • 主题发起人 主题发起人 hukaijt
  • 开始时间 开始时间
H

hukaijt

Unregistered / Unconfirmed
GUEST, unregistred user!
<font color="red"><strong>这个SQL语句怎么写?(很麻烦的问题)</strong></font> (100分)<br />这个SQL语句怎么写?(很麻烦的问题)
主表 从表 关系用字段ID来一对多
ID 姓名 ID 入院日期
1 小名 1 1988-1-1
1 1999-8-8
2 小李 2 1999-1-1
2 2000-2-2
2 2001-1-1
现在要把两个表连接起来,但从表只要ID重复记录,就选出第一条,就是生成下面的表:
ID 姓名 入院日期
1 小名 1988-1-1
2 小李 1999-1-1 (注意这里ID不要重复)
请问该怎么写,有没有办法用一条SQL语句就写成功的?谢谢大家!!!
 
select a.id,a.name,min(b.入院日期) from 主表 a inner join 从表 b
group by a.id,a.name
 
select a.id,a.xm,c.rq from a,(select id,min(rq) as rq from b group by id) c where a.id=c.id
 
select a.id,a.姓名,min(b.入院日期) from 主表 a ,从表 b
where (a.id=b.id)
group by a.id,a.姓名
 
哦,对不起,我没有说清楚,在从表里还有一些其他字段,也是不一样的,
我只想要从表里的第一条,怎么做的呢?
 
用一个Tquery记录此SQL语句:
select a.id,a.姓名,min(b.入院日期) from 主表 a ,从表 b
where (a.id=b.id)
group by a.id,a.姓名
再写点代码,每个姓名取第一条再insert into 另外一个表不就得了。

 
select top 1 a.*,b.* from 主表 a,主表 b where a.id=b.id
 
select a.id,a.姓名,b.入院日期 from a,b where a.id=b.id and b.入院日期 =
(Select Min(入院日期) from b where id=a.id)
 
select *
from 主表 T1, (select ID,min(入院日期) from 从表 group by ID) T2
where T1.ID=T2.ID
如可从表还有字段改这里
select ID,Field1,Field2, min(入院日期) from 从表 group by ID,Field1,Field2
 
select id, min(入院日期) riqi INTO #B from 从表 group by id
select 主表.* ,从表.* from 主表 ,从表 , B WHERE (主表.id=从表.id) and (从表.id=b.id) and (从表.入院日期=b.riqi)
 
select distinct a.id,a.姓名,b.入院日期 from 主表 a ,从表 b where (a.id=b.id)
 
select 主表.ID,从表.Field1,从表.Field2...,min(入院日期) from 主表,从表 group
by ID,从表.Field1,从表.Field2... where 主表.ID=从表.id
可以参照tinytao的方法试试。如果还要在其它字段上做过滤,确实有点麻烦。那就多用几
个min,max之类的函数或and,or之类的....
 
DJ.的回答是正确的。
select distinct a.id,a.姓名,b.入院日期 from 主表 a ,从表 b where (a.id=b.id)
 
同意楼上的写法,如果对从‘从表’中的取出的数据无所谓的话。如果要第一条数据,还是
这样写吧
select a.id,a.xm,c.rq
from a,(select id,min(rq) as rq from b group by id) c
where a.id=c.id
 
多人接受答案了。
 
后退
顶部