使用引用从同一个表中选择行

时间:2012-09-04 07:30:56

标签: mysql

我有一个名为tblA的表。我有以下一组值。

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

现在我正在尝试获取第1行到第4行(即起始行将是ref列中值为'ASD'的行,最后一行将是REF列中具有某些值的行之前的行'FGH')。

我尝试过使用关键字,但我没有把它弄好。任何方法都可以吗?

2 个答案:

答案 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

SQL FIDDLE here.

答案 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

这应该适合你。