请问各位大侠,如何简化下面这个超长的union在一起的select语句,让它看起来短一点?象下面这样使用查询语句会不会影响性能?SELECT A.Id, A.PersonSCId, 
   A.RefDate, A.WorkedHours, A.InvoicedHours, 
   A.TaskId as WpID,
   A.TaskId as TaskId,
   WorkPackage.ParentId as ActivityId,
   Activity.ProjectId,
   A.Description
FROM A , WorkPackage ,Activity
WHERE A.TaskId = WorkPackage.Id AND
WorkPackage.ParentId=Activity.Id 
Union
SELECT A.Id, A.PersonSCId, 
   A.RefDate, A.WorkedHours, A.InvoicedHours, 
Task.ParentId as WpId,
  A.TaskId as TaskID,
   A.TaskId as ActivityID,
   Activity.ProjectId,
   A.Description
FROM A ,Activity, Task
WHERE A.TaskId = Activity.Id AND A.TaskId=Task.Id如果需要其它细节,我可以补充。

解决方案 »

  1.   

    可以修改成這樣
    SELECT A.Id, A.PersonSCId, 
       A.RefDate, A.WorkedHours, A.InvoicedHours, 
       A.TaskId as WpID,
       A.TaskId as TaskId,
       WorkPackage.ParentId as ActivityId,
       Activity.ProjectId,
       A.Description
    FROM A , WorkPackage ,Activity
    WHERE A.TaskId = WorkPackage.Id AND
    WorkPackage.ParentId=Activity.Id 
    Union
    SELECT A.Id, A.PersonSCId, 
       A.RefDate, A.WorkedHours, A.InvoicedHours, 
    Task.ParentId,
      A.TaskId,
       A.TaskId,
       Activity.ProjectId,
       A.Description
    FROM A ,Activity, Task
    WHERE A.TaskId = Activity.Id AND A.TaskId=Task.Id
      

  2.   

    谢谢楼上两位的认真的回答。
    不好意思,我刚开始学sql,没写过几条语句。我不太清楚,一般select语句这么长是很正常的吗?还是一般还可能更长?btw: 请问paoluo(一天到晚游泳的鱼) 大侠,为什么这样修改?有何益处?
      

  3.   

    乍一看,愣是没有看出鱼改在了什么地方^^;to lz
    写Union因为是有很多重复语句出现,长点很正常,一般单个语句的长度也就差不多这样了。真正长的是一系列语句整合在一起的存储过程之类。
      

  4.   

    LouisXIV(夜游神) ( ) 信誉:100  2006-06-22 16:12:00  得分: 0  
     
     
       乍一看,愣是没有看出鱼改在了什么地方^^;----------------------------------
    我修改的只是union之後的查詢語句的as去掉了。
      

  5.   

    btw: 请问paoluo(一天到晚游泳的鱼) 大侠,为什么这样修改?有何益处?---------------------------------------
    益處基本沒有,就是長度看起來短了點。因為union會以第一個查詢的列名為最後顯示的列名,所以union之後的查詢可以不需加as。
      

  6.   

    paoluo(一天到晚游泳的鱼) 
    厉害,算是优化了一下