当前位置: 代码迷 >> Sql Server >> 请问,怎么用SQL语句实现表3的效果,多谢
  详细解决方案

请问,怎么用SQL语句实现表3的效果,多谢

热度:90   发布时间:2016-04-24 10:18:12.0
请教,如何用SQL语句实现表3的效果,谢谢
各位老师好,我有一个SQL语句的问题,一直写不出来,请各位老师指点一下,谢谢。

简单说,以表1为基础,从表2中提取符合要求的数值,形成表3,详见下面例子。

表1
ID 名称
1 AAAAAAAAAA
2 BBBBBBBBBB
3 CCCCCCCCCC
4 DDDDDDDDDD

表2
ID 名称                  更新时间
34 BBBBBBBBBB 6月2日
35 AAAAAAAAAA         6月1日
36 CCCCCCCCCC 6月9日
37 BBBBBBBBBB 5月1日
38 BBBBBBBBBB 4月8日
39 CCCCCCCCCC 3月6日
40 CCCCCCCCCC 6月3日
41 DDDDDDDDDD 7月1日
42 DDDDDDDDDD 7月3日
43 DDDDDDDDDD 3月4日

表3 (希望通过SQL语句实现这个表的效果)
ID 名称                 最后更新时间
1 AAAAAAAAAA         6月1日
2 BBBBBBBBBB 6月2日
3 CCCCCCCCCC 6月9日
4 DDDDDDDDDD 7月3日




------解决方案--------------------

select a.ID,a.名称,max(b.更新时间)更新时间
from a inner join b on a.名称=b.名称
group by a.ID,a.名称
------解决方案--------------------
select aa.ID ,aa.名称,bb.更新时间 from 表1 aa left join
(select bb.名称,max(bb.更新时间) 更新时间 from 表2 group by bb.名称) bb
on aa.名称=bb.名称

------解决方案--------------------
select a.ID,a.名称,max(b.更新时间)更新时间
 from a left join b on a.名称=b.名称
 group by a.ID,a.名称 
------解决方案--------------------
引用,这一句对于我的发贴是可行,但是因为用了inner join,假如表2的35行删掉,那么表3只出来三行,而我希望仍然显示4行,即AAAAAAAAAA后面显示空白或别的什么的,请问能否改进?

可用left join
------解决方案--------------------
create table 表1
(ID int,
名称 char(20))

insert into 表1 values
(1,'AAAAAAAAAA'),
(2,'BBBBBBBBBB'),
(3,'CCCCCCCCCC'),
(4,'DDDDDDDDDD')

select * from 表1

create table 表2
(ID int,
名称 char(20),
更新时间 char(10))

insert into 表2 values
(34,'BBBBBBBBBB','6月2日'),
(35,'AAAAAAAAAA','6月1日'),
(36,'CCCCCCCCCC','6月9日'),
(37,'BBBBBBBBBB','5月1日'),
(38,'BBBBBBBBBB','4月8日'),
(39,'CCCCCCCCCC','3月6日'),
(40,'CCCCCCCCCC','6月3日'),
(41,'DDDDDDDDDD','7月1日'),
(42,'DDDDDDDDDD','7月3日'),
(43,'DDDDDDDDDD','3月4日')

select * from 表2

select a.ID,a.名称,MAX(更新时间) 最后更新时间 from 表1 a 
left join 表2 b
on a.名称=b.名称
group by a.ID,a.名称

insert into 表1 values
(5,'EEEEEEEEEE')

select a.ID,a.名称,MAX(更新时间) 最后更新时间 from 表1 a 
left join 表2 b
on a.名称=b.名称
group by a.ID,a.名称


动手测试了一下,可以满足你的要求!
------解决方案--------------------
所有没有用聚合函数包住的列都要在group by里面,除了那些自定义的列,如 select 'a' as col这种
  相关解决方案