一条有些无聊但也有些用的SQL语句

在一些情况下,要显示的数据比较多,且不属于同一条记录时,如果使用Formview等不是很方便,因为需要相应建多个Formview和数据源控件,繁琐且效率低下,一个变通的办法,是用一条嵌套查询,把需要的数据一次查到(当然这种变通仅限于返回单条的情况)。一个例子如下:
select (select Name from IIMSBasisInf where Duty='党总支书记') as Name1,
(select Name from IIMSBasisInf where Duty='党总支副书记') as Name2,
(select Name from IIMSBasisInf where Duty='部主任') as Name3,
(select top 1 Name from IIMSBasisInf where Duty='部副主任') as Name4,
(select top 1 Name from IIMSBasisInf where Duty='部副主任' and Name<>(select top 1 Name from IIMSBasisInf where Duty='部副主任')) as Name5,
(select top 1 Name from IIMSBasisInf where Duty='部副主任' and Name not in (select top 2 Name from IIMSBasisInf where Duty='部副主任')) as Name6,
(select Name from IIMSBasisInf where Duty='教研室主任' and Department='第一教研室') as Name7,
(select Name from IIMSBasisInf where Duty='教研室副主任' and Department='第一教研室') as Name8,
(select Name from IIMSBasisInf where Duty='教研室主任' and Department='第二教研室') as Name9,
(select Name from IIMSBasisInf where Duty='教研室副主任' and Department='第二教研室') as Name10,
(select Name from IIMSBasisInf where Duty='教研室主任' and Department='第三教研室') as Name11,
(select Name from IIMSBasisInf where Duty='教研室副主任' and Department='第三教研室') as Name12,
(select Name from IIMSBasisInf where Duty='中心主任') as Name13,
(select Name from IIMSBasisInf where Duty='副馆长') as Name14,
(select Name from IIMSBasisInf where Duty='办公室主任') as Name15
在基本信息表中,记录了所有老师的信息,现在一个页面上需要分别找出担任各个职务的人的人名,原始的方法当然是一次查找建一个数据源和一个Formview之类的控件,但是这样操作繁琐且效率低下。
现在的方法是使用嵌套,注意语句中的
(select top 1 Name from IIMSBasisInf where Duty='部副主任') as Name4,
(select top 1 Name from IIMSBasisInf where Duty='部副主任' and Name<>(select top 1 Name from IIMSBasisInf where Duty='部副主任')) as Name5,
(select top 1 Name from IIMSBasisInf where Duty='部副主任' and Name not in (select top 2 Name from IIMSBasisInf where Duty='部副主任')) as Name6,
这样写是因为部副主任有多人,不加top进行限定会返回多条记录,这在嵌套查询中会产生错误,所以使用了上面的办法,依次取出数据。
上面的sql语句本身没有什么技术深度,只是为了能用一次查询,得到全部结果,从而可以和Formview进行绑定。

转载于:https://www.cnblogs.com/wolfgangtang/archive/2007/04/18/717588.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值