当前位置: 代码迷 >> DB2 >> 有点麻烦的一个查询语句,请高手近来指导小虾!解决方案
  详细解决方案

有点麻烦的一个查询语句,请高手近来指导小虾!解决方案

热度:1866   发布时间:2013-02-26 00:00:00.0
有点麻烦的一个查询语句,请高手近来指导小虾!!!!
问提:查询人员信息,人员信息主要包括:id,name,dept(部门),phone......

要求:
1.)要先查出和当前登陆用户所在部门相同的人员信息,显示在最前面.
2.)其他人员信息首先按部门分组.
3.)其他人员信息显示依次按dept和id排序显示.
4.)查询结果中人员信息不能有重复.
上述要求一条语句完成.

小虾写了一句,验证下好象可以实现,但总觉得有更好办法,请高手指教!!!
先谢谢进来的所有朋友^-^


/***************************************************************
我的方法:

(   select   *   from   cms_address   where   dept   not   in   'O000006370 '     and     employee_id   !=   ' '   and   addr_type   =   '0 '   order   by   dept,addr_id)
union   all
(select   *   from   cms_address   where   dept   =   'O000006370 '     and   addr_type   =   '0 '     and     employee_id   !=   ' '   )

说明:
union   和   union   all区别
union   联合查询前后字句查询结果,过滤掉相同的结果.
union   all     联合前后查询结果,但不进行过滤.
我想要的是过滤的.
***************************************************************/

------解决方案--------------------------------------------------------
按你的要求,上面的sql已经是一个很好的选择了。
------解决方案--------------------------------------------------------
( select 2 as a,* from cms_address where dept <> 'O000006370 ' and employee_id != ' ' and addr_type = '0 ' order by dept,addr_id)
union
(select 1 as a ,* from cms_address where dept = 'O000006370 ' and addr_type = '0 ' and employee_id != ' ' ) order by a,dept,id
  相关解决方案