如果找不到我输入的记录,如何在SQL中查找下一个更大的可用记录

时间:2015-01-28 16:21:29

标签: c# sql linq

mytable是下一个

Part Number     Voltage Amp HP
MMX34AA014F0-0      480 14  10
MMX34AA016F0-0      480 16  10
DC1-34018FB-A20N    480 18  10

我想在我的Db中搜索记录,例如HP =' 10'并且[Amp] =' 14' 它应该给我MMX34AA014F0-0这个,那就好了

但如果HP =' 10'并且[Amp] =' 13'它应该给我MMX34AA014F0-0这个

Part Number     Voltage [Amp]   HP
MMX34AA014F0-0  480 14  10

如果HP =' 10'并且[Amp] =' 15'它应该给我MMX34AA016F0-0这个

Part Number     Voltage  [Amp]  HP
MMX34AA016F0-0  480 16  10

我该怎么做? 因为我正在做的方式是检索我输入的所有大于Amp的记录以及我真正想要的是如果我在[amp]变量中输入的值未找到,则搜索大于一个我进入

2 个答案:

答案 0 :(得分:3)

这将为您提供所需内容,其中@hp是您的hp变量,而@amp是您的amp变量。

SELECT * 
FROM mytable
WHERE [HP] = @hp
   AND [AMP] = (SELECT MIN([AMP]) FROM mytable WHERE [HP] = @hp AND [AMP] >= @amp)

答案 1 :(得分:1)

在microsoft t-sql中,我做过类似的事情:

select top 1 * from table t1 where t1.value >= 10 order by value

(如果它在那里会返回10,但是如果表中没有10个则给我11,12,13等。)

我认为你可以用mySQL中的“limit”命令做类似的事情,因为“top”是一个MS t-sql命令。