Cur*_*che 83 sql sorting union ms-access sql-order-by
如何从两个表中提取数据时以编程方式对联合查询进行排序?例如,
SELECT table1.field1 FROM table1 ORDER BY table1.field1
UNION
SELECT table2.field1 FROM table2 ORDER BY table2.field1
Run Code Online (Sandbox Code Playgroud)
引发异常
注意:这是在MS Access Jet数据库引擎上尝试的
ajg*_*ing 118
有时您需要ORDER BY在每个需要组合的部分中使用UNION.
在这种情况下
SELECT * FROM
(
SELECT table1.field1 FROM table1 ORDER BY table1.field1
) DUMMY_ALIAS1
UNION ALL
SELECT * FROM
(
SELECT table2.field1 FROM table2 ORDER BY table2.field1
) DUMMY_ALIAS2
Run Code Online (Sandbox Code Playgroud)
Ann*_*off 64
SELECT field1 FROM table1
UNION
SELECT field1 FROM table2
ORDER BY field1
Run Code Online (Sandbox Code Playgroud)
Ans*_*ith 57
我认为这很好地解释了.
以下是使用ORDER BY子句的UNION查询:
select supplier_id, supplier_name
from suppliers
where supplier_id > 2000
UNION
select company_id, company_name
from companies
where company_id > 1000
ORDER BY 2;
Run Code Online (Sandbox Code Playgroud)
由于两个"select"语句的列名不同,因此通过它们在结果集中的位置引用ORDER BY子句中的列更为有利.
在这个例子中,我们通过分类结果supplier_name/ company_name升序排列,并标示为的"ORDER BY 2".
的supplier_name/ company_name字段在位置#2中的结果集.
摘自:http://www.techonthenet.com/sql/union.php
Ian*_*oyd 28
使用一个具体的例子:
SELECT name FROM Folders ORDER BY name
UNION
SELECT name FROM Files ORDER BY name
Run Code Online (Sandbox Code Playgroud)
文件:
name
=============================
RTS.exe
thiny1.etl
thing2.elt
f.txt
tcpdump_trial_license (1).zip
Run Code Online (Sandbox Code Playgroud)
文件夹:
name
============================
Contacts
Desktop
Downloads
Links
Favorites
My Documents
Run Code Online (Sandbox Code Playgroud)
期望输出:(首先选择第一个结果,即文件夹优先)
Contacts
Desktop
Downloads
Favorites
Links
My Documents
f.txt
RTMS.exe
tcpdump_trial_license (1).zip
thiny1.etl
thing2.elt
Run Code Online (Sandbox Code Playgroud)
SQL实现了预期的结果:
SELECT name
FROM (
SELECT 1 AS rank, name FROM Folders
UNION
SELECT 2 AS rank, name FROM Files) dt
ORDER BY rank, name
Run Code Online (Sandbox Code Playgroud)
Tod*_*ice 17
以下是2007年Northwind的一个例子:
SELECT [Product ID], [Order Date], [Company Name], [Transaction], [Quantity]
FROM [Product Orders]
UNION SELECT [Product ID], [Creation Date], [Company Name], [Transaction], [Quantity]
FROM [Product Purchases]
ORDER BY [Order Date] DESC;
Run Code Online (Sandbox Code Playgroud)
在完成所有工会之后,ORDER BY子句只需要是最后一个语句.您可以将多个集合在一起,然后在最后一个集合之后放置一个ORDER BY子句.
(SELECT table1.field1 FROM table1
UNION
SELECT table2.field1 FROM table2) ORDER BY field1
Run Code Online (Sandbox Code Playgroud)
工作?记住思考集.使用union获取所需的集合,然后对其执行操作.
SELECT table1Column1 as col1,table1Column2 as col2
FROM table1
UNION
( SELECT table2Column1 as col1, table1Column2 as col2
FROM table2
)
ORDER BY col1 ASC
Run Code Online (Sandbox Code Playgroud)