【发布时间】:2013-11-19 12:33:08
【问题描述】:
我有以下问题。
让 TableA(Id int, Name nvarchar(200)) 和 TableB(Id int, Name nvarchar(200))。
如果我们运行以下查询:
SELECT *
FROM
(SELECT *
FROM TableA)
UNION
(SELECT *
FROM TableB)
我们得到两个数据集的并集。
我的问题是我希望第二个数据集的结果按名称列排序。
我需要这个的原因是,TableA 是我查询中的一个临时表,它总是会保存一条记录,而我希望这条记录成为两个数据集联合生成的数据集中的第一个记录.另外,我希望 TableB 的多个记录按名称列排序。
不幸的是,当我尝试执行以下查询时
SELECT *
FROM
(SELECT *
FROM TableA)
UNION
(SELECT *
FROM TableB
ORDER BY Name)
我收到一条模棱两可的错误消息,通知我关键字顺序附近的语法不正确。
提前感谢您的帮助。
【问题讨论】:
-
“这条记录我想成为结果数据集中的第一个” - 那么你最好在你的
ORDER BY子句中包含一些导致这种情况发生的东西。 不保证当使用UNION(或@ 987654327@) 运算符。 -
当你在我的 ORDER BY 子句中说什么时,你是什么意思?
-
您需要一个适用于整个结果集的
ORDER BY子句,并考虑SELECT语句中所有的结果在 union 中,并指定 所有您的订购要求。 -
好的,达米安。非常感谢。
标签: sql tsql sql-order-by union