如何订购具有全选功能的UNION查询

时间:2013-01-29 17:01:31

标签: sql database ms-access

所以这个查询是针对数据库的组合框,我试图订购里面出现的项目列表,但它不会工作。这是查询

Select "*",  "<<All Records>>" 
FROM Treatment 
UNION 
Select Treatment.TreatmentID, Treatment.Treatment 
From Treatment;

我尝试为查询的两个部分添加Order By,并尝试切换它,仍然无法工作,任何想法?我尝试ORDER BY Treatment.TreatmentID,因为那是该表的主键

ORDER BY在第二部分本身工作,顺便说一下,当没有工会时。目前,数据正在排序:

<<All Records>>
1 Treatment Name
8 Treatment Name
9 Treatment Namw
10 Treatment Name
11 Treatment Name 
12 Treatment Name
2 Treatment Name
Etc...

数字是ID,治疗名称(显然不是全部称为治疗名称)来自治疗名称字段。我需要顶部的“所有记录”,然后通过ID对联合的第二部分中的数据进行排序。

提前致谢,

亚当

3 个答案:

答案 0 :(得分:6)

您可以添加一个可用于对数据进行排序的字段:

Select "*" as AllRec,  "<<All Records>>" as Allrecords, 1 as SortOrder
FROM Treatment 
UNION 
Select Treatment.TreatmentID, Treatment.Treatment, 2 as SortOrder
From Treatment
ORDER BY SortOrder, AllRec;

ORDER BY始终应用于最后,因此它不会知道Treatment.TreatmentID列名称。

答案 1 :(得分:1)

你可以这样做:

Select q.* from 
(Select "*", "<>" 
FROM Treatment UNION 
Select Treatment.TreatmentID, Treatment.Treatment 
From Treatment) q
ORDER BY q.whatever

答案 2 :(得分:0)

SELECT,“--- All Records ---”,SortOrder = 0

UNION

SELECT TreatmentID,Treatment,SortOrder = 1 来自治疗

按顺序排序,治疗;

(只有两年半的时间!)