0

tblAという名前のテーブルがあります。次の値のセットがあります。

ID    REF     
---------
1     ASD    
2     null    
3     null    
4     null    
5     FGH     
6     null     

今、私は行1から4を取得しようとしています(つまり、開始行はref列に値'ASD'がある行になり、最後の行はREF列に'FGH'と言う値を持つ行の前の行になります)。

betweenキーワードで試してみましたが、うまくいきません。

4

2 に答える 2

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

ここで SQL フィドル。

于 2012-09-04T07:45:50.457 に答える
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

これはうまくいくはずです。

于 2012-09-04T07:47:33.267 に答える