Mysql 选择条件所在的当前行和上一行
我想选择值为“a”的所有行及其前面的行Mysql 选择条件所在的当前行和上一行,mysql,sql,Mysql,Sql,我想选择值为“a”的所有行及其前面的行 id value --------- 1 a 2 b 3 c 4 a 5 t 6 y 7 a 我调查 但是我想在一个查询中得到所有这样的行 请帮我开始 谢谢我认为最简单的方法可能是使用变量: id value --------- 1 a 3 c 4 a 6 y 7 a 另一种方法是使用相关子查询获取上一个值,然后在where子句中使用该值: 对于id上的索引,这可能比使用变量的方法更快 select t.* from (select t.*,
id value
---------
1 a
2 b
3 c
4 a
5 t
6 y
7 a
我调查
但是我想在一个查询中得到所有这样的行
请帮我开始
谢谢我认为最简单的方法可能是使用变量:
id value
---------
1 a
3 c
4 a
6 y
7 a
另一种方法是使用相关子查询获取上一个值,然后在where子句中使用该值:
对于id上的索引,这可能比使用变量的方法更快
select t.*
from (select t.*,
(rn := if(value = 'a', 1, @rn + 1) as rn
from table t cross join
(select @rn := 0) params
order by id desc
) t
where rn in (1, 2)
order by id;
select t.*
from (select t.*,
(select t2.value
from table t2
where t2.id < t.id
order by t2.id desc
limit 1
) as prev_value
from table t
) t
where value = 'a' or prev_value = 'a';