我正在尝试使用SQL从数据库中选择较小的数字。
我有桌子,我有这样的记录
ID NodeName NodeType
4 A A
2 B B
2 C C
1 D D
0 E E
和其他列,如名称和类型。
如果我通过" 4"作为参数,我希望收到下一个最小的数字记录:
ID NodeName NodeType
2 B B
2 C C
现在,如果我使用<
标志,那就是给我
ID NodeName NodeType
2 B B
2 C C
1 D D
0 E E
我怎样才能使这个工作?
答案 0 :(得分:6)
您可以使用WITH TIES
子句:
SELECT TOP (1) WITH TIES *
FROM mytable
WHERE ID < 4
ORDER BY ID DESC
TOP
子句与WHERE
和ORDER BY
一起选择下一个最小值到4
。 WITH TIES
子句保证所有这些值将被返回,以防有多个。
答案 1 :(得分:3)
select ID
from dbo.yourtable
where ID in
(
select top 1 ID
from dbo.your_table
where ID < 4
order by ID desc
);
注意:dbo.your_table
是您的源表
它使用内部查询来拉取所选值下面的下一个最小ID
。然后外部查询将所有与下一个最小值的ID
匹配的记录拉出来。
这是一个完整的工作示例:
use TestDatabase;
go
create table dbo.TestTable1
(
ID int not null
);
go
insert into dbo.TestTable1 (ID)
values (6), (4), (2), (2), (1), (0);
go
select ID
from dbo.TestTable1
where ID in
(
select top 1 ID
from dbo.TestTable1
where ID < 4
order by ID desc
);
/*
ID
2
2
*/