我有一个名为tblA的表。我有以下一组值。
ID REF
---------
1 ASD
2 null
3 null
4 null
5 FGH
6 null
现在我正在尝试获取第1行到第4行(即起始行将是ref列中值为'ASD'的行,最后一行将是REF列中具有某些值的行之前的行'FGH')。
我尝试过使用关键字,但我没有把它弄好。任何方法都可以吗?
答案 0 :(得分:3)
可以使用排名方法:
select * from(
SELECT @rank := IF(@prevVal<>ref or ref is null,@rank, @rank+1) AS rank,
id,ref,
@prevVal:=ref
FROM scores
,
(SELECT @rank := 0,@prevVal:=null) r
order by id) m
where m.rank=1
答案 1 :(得分:0)
SELECT ID, REF,
(CASE WHEN REF IS NOT NULL THEN @refs := @refs + 1 ELSE @refs END) AS counter
FROM ( SELECT ID, REF
FROM tblA, (SELECT @refs := 0) AS vars
WHERE ID >= 1
ORDER BY ID ASC) AS h
HAVING counter = 1
这应该适合你。