如何创建一个在负ID之后首先返回正值的SQL语句?

时间:2016-07-13 13:38:24

标签: sql sql-server sorting

我需要一个SQL语句,它首先返回正ID 1,2,3,然后返回负ID -1,-2,-3等等。

我需要在MS SQL Server的一个sql语句中使用它。可能有人写一个sql语句的例子吗?非常感谢每一个有用的答案!

目前的输出:

ID  |  name
-46 |  TestA
-45 |  TestB
...
1   |  TestK
2   |  TestL
...
134 |  TestC

我需要这个结果:

ID  | name
134 | TestC
1   | TestK
2   | TestL
-46 | TestA
-45 | TestB

4 个答案:

答案 0 :(得分:2)

尝试使用UNION:

SELECT id
FROM MYTABLE
WHERE id >= 0
ORDER BY id
UNION
SELECT id
FROM MYTABLE
WHERE id < 0
ORDER BY id DESC

答案 1 :(得分:0)

试试这个

SELECT TOP 3 ID FROM TBL WHERE ID > 0 ORDER BY ID
UNION ALL
SELECT TOP 3 ID FROM TBL WHERE ID < 0 ORDER BY ID DESC

答案 2 :(得分:0)

您希望先按标志排序,然后按幅度排序。尝试:

SELECT ID, Name FROM TBL ORDER BY SIGN(ID) DESC, Name

答案 3 :(得分:-2)

所以,我已经解决了我自己的问题。 这是我的SQL语句,效果很好:)

SELECT Id, Name
FROM TblName
WHERE Name LIKE '[a-z]%'
ORDER BY SIGN(Id) DESC, Name

此语句按名称对数据进行排序,但首先显示具有正ID的名称,然后显示负ID!