menghaoran
人都会死,但不是每个人都真正活过!

  因为需要一个查询语句,能同时从三张表中查询一个相同字段的值,只查出来一次即可,这三张表除了这个列名称一致以外,其它没有任何关系,因为只查询一个结果,所以用到了if  else,刚开始以为是if exists ,检查这个值是否存在,后来发现exsits是查询这个列是否存在,如下:

if exists (select studentType from dbo.StudentGrow_HealthDiseasesRecord)
select studentType from dbo.StudentGrow_HealthDiseasesRecord
else if exists (select studentType from dbo.StudentGrow_HealthFitnessTest)
select studentType from dbo.StudentGrow_HealthFitnessTest
else if exists (select studentType from dbo.StudentGrow_HealthHealthChecklist )
select studentType from dbo.StudentGrow_HealthHealthChecklist

即使没有任何数据,它也是成立的,不符合想要的结果,就改成了如下:

if  (select studentType from dbo.StudentGrow_HealthDiseasesRecord)>0
select studentType from dbo.StudentGrow_HealthDiseasesRecord
else if  (select studentType from dbo.StudentGrow_HealthFitnessTest)>0
select studentType from dbo.StudentGrow_HealthFitnessTest
else if  (select studentType from dbo.StudentGrow_HealthHealthChecklist )>0
select studentType from dbo.StudentGrow_HealthHealthChecklist

因为studentType 刚好类型是int,所以就 这样判断了。

在用exists的时候,它就会只执行第一个if,因为只要studentType 列存在,它就是成立的,所以改为下面的。

 

 

posted on 2013-10-18 13:54  menghaoran  阅读(867)  评论(0编辑  收藏  举报