如何只选择下一个较小的值

Reb*_*cca 4 sql sql-server

我试图用SQL从数据库中选择较小的数字.

我有桌子,我有这样的记录

ID NodeName NodeType
4  A        A
2  B        B
2  C        C
1  D        D
0  E        E
Run Code Online (Sandbox Code Playgroud)

和其他列,如名称和类型.

如果我传递"4"作为参数,那么我想收到下一个最小的数字记录:

ID NodeName NodeType
2  B        B
2  C        C
Run Code Online (Sandbox Code Playgroud)

现在,如果我正在使用该<标志,那么它正在给我

ID NodeName NodeType
2  B        B
2  C        C
1  D        D
0  E        E
Run Code Online (Sandbox Code Playgroud)

我怎样才能使这个工作?

Gio*_*sos 6

你可以使用WITH TIES 条款:

SELECT TOP (1) WITH TIES *
FROM mytable
WHERE ID < 4
ORDER BY ID DESC
Run Code Online (Sandbox Code Playgroud)

TOP子句会同WHEREORDER BY选择下一个最小4.WITH TIES子句保证将返回所有这些值,以防有多个值.

在这里演示