2011-12-03 55 views
1

我正在瀏覽數據庫中的最新五個條目。我也想顯示旁邊的條目總數。COUNTing總行,同時選擇這些的一個子集 - 在一個MySQL查詢?

目前我正在運行的兩個查詢 - 第一,以獲取最新的五:

SELECT reference.id, reference.name 
FROM reference 
WHERE (status = 2 OR status = 3) 
ORDER BY reference.date 
LIMIT 5 

第二,要計算總:

SELECT COUNT(reference.status) AS complete_count 
FROM reference 
WHERE (status = 2 OR status = 3) 

有什麼辦法加入這些兩合一?當我嘗試向第一個查詢的輸出(COUNT)添加另一列時,它只返回一行。

謝謝!

回答

3

這應該給你,你希望什麼:

SELECT reference.id, reference.name, COUNT(1) AS complete_count 
FROM reference 
WHERE status = 2 
    OR status = 3 
GROUP BY reference.id, reference.name 
ORDER BY reference.date 
LIMIT 5 
0

可以拉動選擇的項目,以便子...

select foo, bar, (select count(*) from tableA) from tableA; 

請記住,這取決於查詢的其餘部分的複雜性,這可能是一個相當昂貴的選擇,但。

0

是,幾種方法: -

select reference.id, reference.name, b.complete_count 
FROM reference 
JOIN 
(
SELECT COUNT(reference.status) AS complete_count 
FROM reference 
WHERE (status = 2 OR status = 3) 
) as b 
WHERE ... 

這種方法比較好,因爲它做了計數,然後再加入。

建議的另一個答案是要觸發每行的子查詢,
這是不太理想的。

或者你可以使用http://dev.mysql.com/doc/refman/5.0/en/information-functions.html#function_found-rows(兩個查詢)