2010-09-24 68 views
0

我有一個查詢選擇第n個結果(在本例中是第10個),我只想使用第n個結果的reply_chunk_id,並計算其他人的數目,以查看總共有多少個結果ID。有誰知道如何在一個查詢中做到這一點?mysql count selected fields

SELECT reply_chunk_id,message 
FROM (
    SELECT * 
    FROM messages 
    ORDER BY timestamp ASC 
    LIMIT 10 
) AS tbl WHERE topic_id=? 
ORDER BY timestamp DESC 
LIMIT 1 

回答

3

您可以通過

SELECT reply_chunk_id FROM messages ORDER BY timestamp ASC LIMIT 9,1 

選擇第10行,以便

SELECT COUNT(*) FROM messages 
    WHERE reply_chunk_id = (SELECT reply_chunk_id FROM messages 
           ORDER BY timestamp ASC LIMIT 9,1) 
    AND topic_id = ? 
+0

感謝kenny,顯示結果數量我改變你的count(*)COUNT(reply_chunk_id)並使用$ row2 ['COUNT(reply_chunk_id)'];顯示它。這是做這件事的正確方法嗎? – Scarface 2010-09-24 16:05:40

+1

@Scarface:很好。你也可以給它一個名字,例如'select count(reply_chunk_id)作爲來自...的'count。 – kennytm 2010-09-24 16:15:44

+0

再次感謝kenny,非常感謝 – Scarface 2010-09-24 17:52:34

0

使用LIMIT 1 OFFSET 9也許。不確定這是在MySQL中構建的。

+0

我想用相同的ID被顯示爲第n個結果一數行,我我不知道你在說什麼,我已經選擇了正確的第n個結果,我只想計算它自己的ID。 – Scarface 2010-09-24 15:51:59

+0

對不起,我沒有正確理解這個問題。 – Benoit 2010-09-24 15:54:40

0
SELECT COUNT(1) 
FROM messages 
WHERE reply_chunk_id = 
(SELECT MIN(reply_chunk_id) 
FROM messages 
WHERE timestamp = 
    (SELECT MAX(timestamp) 
    FROM (SELECT timestamp 
      FROM messages 
      ORDER BY timestamp ASC 
      LIMIT 10)))