请问各位大侠,如何简化下面这个超长的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如果需要其它细节,我可以补充。
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如果需要其它细节,我可以补充。
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
不好意思,我刚开始学sql,没写过几条语句。我不太清楚,一般select语句这么长是很正常的吗?还是一般还可能更长?btw: 请问paoluo(一天到晚游泳的鱼) 大侠,为什么这样修改?有何益处?
写Union因为是有很多重复语句出现,长点很正常,一般单个语句的长度也就差不多这样了。真正长的是一系列语句整合在一起的存储过程之类。
乍一看,愣是没有看出鱼改在了什么地方^^;----------------------------------
我修改的只是union之後的查詢語句的as去掉了。
益處基本沒有,就是長度看起來短了點。因為union會以第一個查詢的列名為最後顯示的列名,所以union之後的查詢可以不需加as。
厉害,算是优化了一下