sql – 使用union的不同顺序

前端之家收集整理的这篇文章主要介绍了sql – 使用union的不同顺序前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想写一个像这样的查询
select top 10 * from A
    order by price
    union
    select top 3 * from A 
    order by price

或者……那样的

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

你能帮我么?

解决方法

这应该工作:
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

MSDN开始:

In a query that uses UNION,EXCEPT,or INTERSECT operators,ORDER BY
is allowed only at the end of the statement. This restriction applies
only to when you specify UNION,EXCEPT and INTERSECT in a top-level
query and not in a subquery.

已编辑:强制将ORDER BY应用于外部查询所需的顺序.我为两个查询添加了一个常量值列.

原文链接:https://www.f2er.com/mssql/77756.html

猜你在找的MsSQL相关文章