0

我在选择多行后需要面对的问题,循环遍历每一行并将那些有一些相关信息的人提取到第一行。

例子:

select NAME,ENGLISH_GRADE,FRANCE_GRAE
from (some complex query that have order by and returns 100 rows) WHOLE_ROWS
where

//Here I need to loop over WHOLE_ROWS and make something like that:
//if(currentRow.ENGLISH_GRADE==WHOLE_ROWS(0).ENGLISH_GRADE)
//fetch this row
4

1 回答 1

1

基本上,您需要将查询连接到自身。您可以使用子查询因式分解子句:

WITH complex_query AS
    ( ... complex query here ... ) 
SELECT 
  FROM complex_query cq1
 WHERE cq1.english_grade = ( SELECT english_grade FROM cq1
                              WHERE rownum = 1 )

这是一个SQL Fiddle。你也可以通过分析来做到这一点,但在我看来,这些似乎更难理解。

于 2012-10-09T01:07:54.153 回答