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

Posted

技术标签:

【中文标题】如何订购具有全选功能的 UNION 查询【英文标题】:How to order a UNION query that has a select all function 【发布时间】:2013-01-29 17:01:31 【问题描述】:

所以这个查询是针对数据库的组合框的,我尝试对出现在其中的项目列表进行排序,但是它不起作用。这是查询

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 对联合的第二部分中的数据进行排序。

提前致谢,

亚当

【问题讨论】:

【参考方案1】:

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

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 列名。

【讨论】:

是的,不工作:(我不需要将两者排序在一起,我需要顶部的 SELECT ALL,它是,我需要查询第二部分的结果在它们之间排序,不是全选 不行,还没有排序:(要截图吗? 数据排序是什么? 编辑您的原始帖子并显示一些示例数据,然后显示所需的结果【参考方案2】:

你可以这样做:

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

【讨论】:

【参考方案3】:

SELECT, "--- 所有记录 ---", SortOrder = 0

联合

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

ORDER BY SortOrder,处理;


(只晚了两年半!)

【讨论】:

Opps - 第一个选择应该是 :SELECT 0 AS TreatmentId, "--- All Record ---" AS Treatment, SortOrder = 0

以上是关于如何订购具有全选功能的 UNION 查询的主要内容,如果未能解决你的问题,请参考以下文章

angularJS全选功能实现

如何在视图 SQL 的全选 (*) 中创建子查询?

苹果手机网页全选功能怎么突然没有了?如何重新添加?

如何在 Flex 文本框中创建一个全选功能?

如何使用jquery实现gridview中checkbox(复选框)的全选功能?

Layui table中筛选列增加 [全选,反选] 功能【转】