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
函数。