Sql server 编写查询以按升序和降序显示字段

Sql server 编写查询以按升序和降序显示字段,sql-server,Sql Server,我在一次采访中遇到过这种情况。表设计包含一个整数值字段。编写一个查询以升序和降序显示字段假设您有一个名为tbl的表,该表的列名value类型为int,然后使用order by子句获取升序和降序值 对于升序,如下所示: SELECT value FROM tbl ORDER BY value ASC SELECT value FROM tbl ORDER BY value DESC 按降序排列: SELECT value FROM tbl ORDER BY value ASC SELECT

我在一次采访中遇到过这种情况。表设计包含一个整数值字段。编写一个查询以升序和降序显示字段

假设您有一个名为
tbl
的表,该表的列名
value
类型为
int
,然后使用
order by
子句获取升序和降序值

对于升序,如下所示:

SELECT value FROM tbl ORDER BY value ASC
SELECT value FROM tbl ORDER BY value DESC
按降序排列:

SELECT value FROM tbl ORDER BY value ASC
SELECT value FROM tbl ORDER BY value DESC

您可以通过使用
行号
来实现这一点:

CREATE TABLE tbl(N INT)
INSERT INTO tbl VALUES
(1),(2),(3),(4),(5),(6),(7),(8),(9),(10);

WITH Cte AS(
    SELECT *,
        rn_a = ROW_NUMBER() OVER(ORDER BY N ASC),
        rn_d = ROW_NUMBER() OVER(ORDER BY N DESC)
    FROM tbl
)
SELECT 
    Ascending = a.N, 
    Descending = b.N
FROM Cte a
INNER JOIN Cte b
    ON b.rn_d = a.rn_a

DROP TABLE tbl
结果

Ascending   Descending
----------- -----------
1           10
2           9
3           8
4           7
5           6
6           5
7           4
8           3
9           2
10          1
试试这个:

select a.num,b.num from 
(select a.num, row_number() over (order by num) as rnum  from nums a) a
join (select a.num, row_number() over (order by num desc) as rnum  from nums a) b on a.rnum = b.rnum;

你有什么想法吗?发布一些示例数据和预期结果。阅读关于订购人的条款这里的问题看起来很有趣,但我们需要更多关于你的要求的信息。我相信MySql中没有
ROW\u NUMBER
函数。