查询选择&一次检查1行&找到正确的值(MYSQL)时停止?

时间:2013-06-18 08:15:26

标签: mysql sql

鉴于此表:

Col1-Col2
85 - 2
95 - 4
46 - 3
79 - 6
11 - 5
13 - 1

要求是我希望系统一次检查每一行,如果它看到col2 = 3或col2 = 1,那么它将停止&它将返回中间。

例如:当用户输入“85”时,它会看下一条记录“95”(col2 = 4而不是3或1)然后它会查看下一条记录“46”(col2 = 3)然后它会破坏&安培;回到中间。

Col1-Col2
95 - 4

Ex2:当用户搜索“46”时,它将显示2个边界(46-3)和2之间。 (13 - 1):

Col1-Col2
79 - 6
11 - 5

我认为最简单的代码是在mysql中使用用户定义的变量,如下所示:

select @pv:=col1, col2 from Table1 
where @pv=85

但是这段代码不起作用。我在互联网上搜索但找不到类似的问题。

任何人都可以帮助我吗?如果您可以在sql fiddle(http://sqlfiddle.com/#!2/24b1f/3)中修改查询,那么它会很棒。

1 个答案:

答案 0 :(得分:2)

你真的应该用stored procedurecursor来解决这个问题。

但是,它也可以在SQL中使用,但很难阅读。这是第一个例子

select col1, col2 from
(select col1, 
       col2, 
       if(col2 in (1,3) and @row = 1,@row:=@row+1, @row) as end,
       if(col1 = 85 and @row = 0,@row:=1,@row) as start       
  from Table1
  join (select @row := 0 from dual) dummy) as magic
where end = 1;

http://sqlfiddle.com/#!2/24b1f/23