2011-11-16 118 views
4

在MySQL表中,我想用DISTINCT值取10條記錄。在mysql中記錄不同記錄後應用10的限制

我正在使用Zend Framework。

$select = $this->getAdapter()->select() 
        ->from('table', 'column')->group('column') 
        ->limit(10, 0); 

這是由上述代碼生成的查詢。

SELECT TABLE.COLUMN FROM 表GROUP BY列的限制10

這裏會發生什麼事是MySQL第一次服用10條記錄,然後通過應用組。最後,我只獲得了7條記錄。

如何申請DISTINCT首先,然後從中取10條記錄?

回答

1

測試的是SQL對錶 - MySQL的應用limit最後,所以不要做你說的話。例如針對

a0 a1 
1 1 
2 1 
3 2 
4 2 

和do select A.a1 from A group by a1 limit 2。你應該看到1,2,而不是1,1.
[我想說這是'評論',而不是'答案',但不能]

+0

你是對的。實際上我將結果傳遞給另一個查詢。這就是它被過濾到7條記錄的地方。在原始查詢中,我只有10個不同的值。 – emaillenin

0

我不是100%確定你在做什麼。

但是,如果我正在讀它正確,你需要10條記錄與一定的標準,然後應用該組。而不是相反。

在這種情況下,你不能使用WHERE嗎?

SELECT TABLE.COLUMN FROM表WHERE 「標準 GROUP BY列的限制10

問候 邁克

0

這可能會幫助你(我沒有測試,但這樣我不知道它的工作)

SELECT DISTINCT column FROM table LIMIT 10 

如果它不工作,你可以使用一個臨時表(如(SELECT column FROM table) TEMP),這將選擇不同的元素,那麼查詢將選擇第一這個表格中有十個結果。

希望這會幫助:)

0

在ZF,你應該使用不同的()方法到您的查詢鏈:

$select = $this->getAdapter()->select() 
        ->distinct() 
        ->from('table', 'column') 
        ->limit(10, 0); 
0
SELECT DISTINCT column 
FROM table 
LIMIT 10 
GROUP BY column 

不知道如何得到它爲階級雖然...