2013-03-25 35 views
1

所以,我有兩個子查詢,從同一個表返回相同的列兩個排序的子查詢到一個結果

查詢#1:

SELECT E.Id,E.Title,E.LocationId,P.LocationId,E.DepartmentId,P.DepartmentId,E.DateCreated,E.IsActive,E.IsHotJob,E.RequisitionId,E.RequisitionIdString,E.RewardSettingId,E.EmploymentOpportunityStatusId 
FROM EmploymentOpportunities E, Profiles P 
WHERE E.EmploymentOpportunityStatusId = 9 AND E.IsActive = 1 AND E.IsHotjob = 1 
    AND P.Id = 'C5F07EBB-CE81-4133-A462-241A5F84D418' AND (P.DepartmentId != E.DepartmentId AND P.LocationId != E.LocationId) 
ORDER BY E.DateCreated DESC 

查詢#2:

SELECT E.Id,E.Title,E.LocationId,P.LocationId,E.DepartmentId,P.DepartmentId,E.DateCreated,E.IsActive,E.IsHotJob,E.RequisitionId,E.RequisitionIdString,E.RewardSettingId,E.EmploymentOpportunityStatusId 
FROM EmploymentOpportunities E, Profiles P 
WHERE E.EmploymentOpportunityStatusId = 9 AND E.IsActive = 1 AND E.IsHotjob = 0 AND 
     P.Id = 'C5F07EBB-CE81-4133-A462-241A5F84D418' AND (P.DepartmentId = E.DepartmentId OR P.LocationId = E.LocationId) 
ORDER BY E.DateCreated DESC 

我希望將這兩個查詢合併爲一個,但保留它們的順序,因此以某種方式將Query#1堆疊到Query#2上。

這可能嗎?

回答

0
SELECT 1 SetNumber, E.Id,E.Title,E.LocationId,P.LocationId,E.DepartmentId, 
    P.DepartmentId,E.DateCreated,E.IsActive,E.IsHotJob,E.RequisitionId, 
    E.RequisitionIdString,E.RewardSettingId,E.EmploymentOpportunityStatusId 
FROM EmploymentOpportunities E, Profiles P 
WHERE E.EmploymentOpportunityStatusId = 9 AND E.IsActive = 1 
    AND E.IsHotjob = 1 P.Id = 'C5F07EBB-CE81-4133-A462-241A5F84D418' 
    AND (P.DepartmentId != E.DepartmentId AND P.LocationId != E.LocationId) 

union all 

SELECT 2, E.Id,E.Title,E.LocationId,P.LocationId,E.DepartmentId,P.DepartmentId, 
    E.DateCreated,E.IsActive,E.IsHotJob,E.RequisitionId,E.RequisitionIdString, 
    E.RewardSettingId,E.EmploymentOpportunityStatusId 
FROM EmploymentOpportunities E, Profiles P 
WHERE E.EmploymentOpportunityStatusId = 9 AND E.IsActive = 1 
    AND E.IsHotjob = 0 AND P.Id = 'C5F07EBB-CE81-4133-A462-241A5F84D418' 
    AND (P.DepartmentId = E.DepartmentId OR P.LocationId = E.LocationId) 

ORDER BY SetNumber, DateCreated desc 
+0

很好。這是我正在尋找的。你在第六行中錯過了AND。非常感謝你 – franciscovalera 2013-03-25 19:04:12

0

只需使用UNION ALL

SELECT * FROM 
(
    Your Query1 

    UNION ALL  // do not use order by here 

    Your Query2 
) AS someName 
ORDER BY yourColumn DESC 

您還可以使用UNION - 但它會過濾掉,如果任何重複。

+0

它會混合結果。不是我需要的 – franciscovalera 2013-03-25 19:01:47

相關問題