RJ.*_*RJ. 1 sql sql-server sql-order-by common-table-expression sql-server-2008
我不能使用公用表表达式:
WITH cte
AS (SELECT [StationID],
[LastDistribution]
FROM [DB1].[dbo].[ProcessingStations]
UNION ALL
SELECT [StationID],
[LastDistribution]
FROM [DB2].[dbo].[ProcessingStations]
UNION ALL
SELECT [StationID],
[LastDistribution]
FROM [DB3].[dbo].[ProcessingStations]
UNION ALL
SELECT [StationID],
[LastDistribution]
FROM [DB4].[dbo].[ProcessingStations]
UNION ALL
SELECT [StationID],
[LastDistribution]
FROM [DB5].[dbo].[ProcessingStations]
ORDER BY [StationID]
UNION ALL
SELECT [StationID],
[LastDistribution]
FROM [DB6].[dbo].[ProcessingStations]
UNION ALL
SELECT [StationID],
[LastDistribution]
FROM [DB7].[dbo].[ProcessingStations]
UNION ALL
SELECT [StationID],
[LastDistribution]
FROM [DB8].[dbo].[ProcessingStations])
SELECT *
FROM cte
ORDER BY StationID
Run Code Online (Sandbox Code Playgroud)
我该怎么做呢?
把它放在ORDER BY你的SELECT ... FROM ... UNION ALL陈述链的末尾:
SELECT [StationID],
[LastDistribution]
FROM [DB1].[dbo].[ProcessingStations]
UNION ALL
SELECT [StationID],
[LastDistribution]
FROM [DB2].[dbo].[ProcessingStations]
UNION ALL
SELECT [StationID],
[LastDistribution]
FROM [DB3].[dbo].[ProcessingStations]
UNION ALL
SELECT [StationID],
[LastDistribution]
FROM [DB4].[dbo].[ProcessingStations]
UNION ALL
SELECT [StationID],
[LastDistribution]
FROM [DB5].[dbo].[ProcessingStations]
ORDER BY [StationID]
UNION ALL
SELECT [StationID],
[LastDistribution]
FROM [DB6].[dbo].[ProcessingStations]
UNION ALL
SELECT [StationID],
[LastDistribution]
FROM [DB7].[dbo].[ProcessingStations]
UNION ALL
SELECT [StationID],
[LastDistribution]
FROM [DB8].[dbo].[ProcessingStations]
ORDER BY StationID
Run Code Online (Sandbox Code Playgroud)
这是我在SSMS中做的一个简单示例:
DECLARE @a table (x int)
DECLARE @b table (x int)
DECLARE @c table (x int)
insert into @a values (5)
insert into @a values (4)
insert into @a values (3)
insert into @b values (0)
insert into @b values (1)
insert into @b values (2)
insert into @c values (0)
insert into @c values (1)
insert into @c values (2)
select * from @a
union all
select * from @b
union all
select * from @c
order by x
Run Code Online (Sandbox Code Playgroud)
这是输出:
x
-----
0
0
1
1
2
2
3
4
5
Run Code Online (Sandbox Code Playgroud)
正如你所看到的,即使SELECT * FROM @a是第一个,它仍然将最后一个放在结果集中
| 归档时间: |
|
| 查看次数: |
7035 次 |
| 最近记录: |