Sql server 获取SQL中最近的较高和较低行

Sql server 获取SQL中最近的较高和较低行,sql-server,union,Sql Server,Union,我试图选择2000年以上的前5个金额和2000年以下的前5个金额,并在单个结果集中返回数据 SELECT TOP 5 * FROM bid WHERE amount >= 2000 ORDER BY amount ASC UNION SELECT TOP 5 * FROM bid WHERE amount < 2000 ORDER BY amount DESC 编写所需查询的正确方法是什么 SELECT * FROM (SELECT TOP 5

我试图选择2000年以上的前5个金额和2000年以下的前5个金额,并在单个结果集中返回数据

SELECT TOP 5 * 
FROM   bid 
WHERE  amount >= 2000 
ORDER  BY amount ASC 
UNION
SELECT TOP 5 * 
FROM   bid 
WHERE  amount < 2000 
ORDER  BY amount DESC 
编写所需查询的正确方法是什么

SELECT * 
FROM   (SELECT TOP 5 * 
        FROM   bid 
        WHERE  amount >= 2000 
        ORDER  BY amount ASC) t1 
UNION 
SELECT * 
FROM   (SELECT TOP 5 * 
        FROM   bid 
        WHERE  amount < 2000 
        ORDER  BY amount DESC) t2 
您可以向结果中添加其他顺序:

SELECT * 
FROM   (SELECT * 
        FROM   (SELECT TOP 5 * 
                FROM   bid 
                WHERE  amount >= 2000 
                ORDER  BY amount ASC) t1 
        UNION 
        SELECT * 
        FROM   (SELECT TOP 5 * 
                FROM   bid 
                WHERE  amount < 2000 
                ORDER  BY amount DESC) t2) t3 
ORDER  BY t3.amount 

请用你正在使用的数据库管理系统来标记你的问题,因为它们在细节上是不同的;请看这里:
SELECT * 
FROM   (SELECT * 
        FROM   (SELECT TOP 5 * 
                FROM   bid 
                WHERE  amount >= 2000 
                ORDER  BY amount ASC) t1 
        UNION 
        SELECT * 
        FROM   (SELECT TOP 5 * 
                FROM   bid 
                WHERE  amount < 2000 
                ORDER  BY amount DESC) t2) t3 
ORDER  BY t3.amount