select (Case When Module='3873' THEN
(select DoorName from NaBon_DoorInfo WHERE DoorId = a.Form and ReadId = a.Intro)
ELSE a.Form End) as Form, (Case When Module='3873' THEN
(select Impact from NaBon_DoorInfo WHERE DoorId = a.Form and ReadId = a.Intro)
ELSE a.Intro End) as IntroFROM dbo.Warder a
因为当Module不等'3873'时,SQL命令会出现错误,所以只有在特字值也才能查询 NaBon_DoorInfo表资料
我尝试了
FROM dbo.Warder a LEFT OUTER JOIN NaBon_DoorInfo d ON a.Module='3873' AND d.DoorId = a.Form AND d.ReadId = a.Intro
当Module不等'3873'时,也会报错。我想将上边的代码进行一下缩写,因为我感觉这样会读三个表,从而会影响运行的速度。
求一个更好的写法!
(select TOP 1 DoorName from NaBon_DoorInfo WHERE DoorId = a.Form and ReadId = a.Intro)
ELSE a.Form End) as Form, (Case When Module='3873' THEN
(select TOP 1 Impact from NaBon_DoorInfo WHERE DoorId = a.Form and ReadId = a.Intro)
ELSE a.Intro End) as IntroFROM dbo.Warder a
from dbo.warder a join nabon_doorinfo d on d.doorid = a.form and d.readid = a.intro
where a.module='3873'
union all
select a.form as form,a.intro as intro
from dbo.warder a
where a.module<>'3873'