2017-02-07 87 views
0

我們正在使用oracle數據庫。我需要排序順序的結果。所以我創建了一個查詢,首先對id進行排序,然後我對子查詢結果應用了查詢以獲得不同的段落。從oracle的子查詢中得到不同的結果

查詢:

select distinct(para) 
from (
    select para, id 
    from book 
    where title='2' 
     and chapter_id='2' 
     and subchap='1' 
     and para is not null 
    order by id) 
order by para 

此返回列表如下:

a 
aa 
aaa 
bb 
c 
d 
dd 

但我想這個名單爲:

a 
c 
d 
aa 
bb 
dd 
aaa 

我想不同的對錶的名單?我如何使用oracle查詢來實現這一點?

回答

1

如果你想得到不同的para由他們的ID排序。你可以試試下面的查詢:

SELECT para 
FROM book 
WHERE title='2' 
    and chapter_id='2' 
    and subchap='1' 
    and para is not null 
GROUP BY para 
ORDER BY MIN(id) 

注意,它在排序所以MIN(id)如果para有多個ID,將被最小的一個進行排序。

如果para, id組合是唯一的,你可以通過這兩個字段組:

SELECT para 
FROM book 
WHERE title='2' 
    and chapter_id='2' 
    and subchap='1' 
    and para is not null 
GROUP BY para, id 
ORDER BY id 
+0

感謝您的答覆。 MIN(id)查詢在我的情況下工作正常,但我在para中有多個ID,但我只需要不同的第一個。 –

1

也許只是想通過長先訂購(至少這一做法的例子相符):

select distinct(para) from 
    (select para, id from book where title='2' and chapter_id='2' and subchap='1' and para is not null) 
    order by length(para), para 

或者,也許你想通過ID進行排序,在這種情況下,你需要的東西是這樣的:

select para from 
    (select para, min(id) as minid from book where title='2' and chapter_id='2' and subchap='1' and para is not null group by para) 
    order by minid 
相關問題