问个简单的SQL语句(100分)

  • 主题发起人 主题发起人 crazycock
  • 开始时间 开始时间
C

crazycock

Unregistered / Unconfirmed
GUEST, unregistred user!
主表A,明细表B,我有这样一个语句
select A.ID,B.ID,B.Data1,B.Data2 from A LEFT JOIN B ON A.ID=B.ID order by A.ID
这个语句执行的结果相信大家都能猜到了,那就是无论B明细表中是否有A表记录的对应信息,那么都会在结果中占一条记录,例如下面的数据:
A表中有
张三
李四
B表中有
张三 本科 4年
张三 硕士 3年
检索的结果应该是
张三 本科 4年
张三 硕士 3年
李四 NULL NULL
我现在的要求是,我想得到
张三 硕士 3年
李四 NULL NULL
这样的结果,也就是说,无论B表中有没有A表的明细,我只想得到最后一条数据,刚才张三的B表中存在本科和硕士,那么我只要最后一条“硕士”即可;而李四在B表没有数据,所以依旧是NULL NULL。
请大家指点。
 
你首先要一张确定学历的代码表吧,从小学-博士。
然后和之前的两个表做连接,然后取级别值最高的记录。
 
MS SQL 2000? 2005? 或其它?
 
select A.ID,B.ID,B.Data1,B.Data2 from A LEFT JOIN B ON A.ID=B.ID
where B.Date2=(select max(B.date2) from B where b.ID=a.ID)
order by A.ID
 
access 数据库哦
 
这个用嵌套语句容易实现
select id,(select top 1 from 表b where a.id=id) from 表a a
 
谢谢大家回复,晚一些我再验证一下。
 
换了一个法子实现了。没有用这个方法。
 
多人接受答案了。
 
后退
顶部