Bar*_*rny 9 sql t-sql sql-server
我想写一个像这样的查询
select top 10 * from A
order by price
union
select top 3 * from A
order by price
Run Code Online (Sandbox Code Playgroud)
或者......那样的
select top 10 * from A
where name like '%smt%'
order by price
union
select top 3 * from A
where name not like '%smt%'
order by price
Run Code Online (Sandbox Code Playgroud)
你能帮我么?
Tim*_*ter 15
这应该工作:
SELECT *
FROM (SELECT TOP 10 A.*, 0 AS Ordinal
FROM A
ORDER BY [Price]) AS A1
UNION ALL
SELECT *
FROM (SELECT TOP 3 A.*, 1 AS Ordinal
FROM A
ORDER BY [Name]) AS A2
ORDER BY Ordinal
Run Code Online (Sandbox Code Playgroud)
来自MSDN:
在使用UNION,EXCEPT或INTERSECT运算符的查询中,只允许在语句末尾使用ORDER BY.此限制仅适用于在顶级查询中而不是在子查询中指定UNION,EXCEPT和INTERSECT的情况.
编辑:强制您需要将顺序应用于ORDER BY外部查询.我为两个查询添加了一个常量值列.