2013-04-23 24 views
0

我們正在使用ORACLE,並且需要從表中獲取一個隨機行,以滿足特定的條件。我搜索了一下,發現這個例子可能對此有用。 但是,據我瞭解,Sample返回整個表的指定大小的隨機子集。 因此,在我們的例子中,因爲我們需要匹配特定WHERE條件的行,所以即使表中包含該過濾器的行,查詢也可能不會返回任何行。Oracle SAMPLE是否與篩選器一起工作?

SELECT柱FROM (SELECT FROM表樣品柱(10)其中COLUMN = 'ABC') WHERE ROWNUM = 1

在上面的查詢,如果10%的樣本集不包含與任何行列'abc'它會返回空結果(即使90%可能包含這樣的行)

任何建議來糾正這種行爲?

+0

你可能想看看[這個問題](http://stackoverflow.com/q/16024737/409172)。 'SAMPLE'並不總是按預期工作。你可能想在Alex的答案中使用'rownumber'方法,以確保你總是得到一個隨機的行。 – 2013-04-23 18:51:01

+0

不知道這裏有什麼問題...列='abc'可能是7%,而不是10.這就是爲什麼你在結果中爲空。 – Art 2013-04-23 19:13:25

回答

2

試試這個:

WITH data AS (SELECT column FROM table WHERE COLUMN='abc') 
SELECT column FROM data SAMPLE(10) 
WHERE rownum = 1 
相關問題