鉴于此表:
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)中修改查询,那么它会很棒。
答案 0 :(得分:2)
你真的应该用stored procedure和cursor来解决这个问题。
但是,它也可以在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;