2014-03-02 79 views
0

沒有COUNT返回3個記錄的查詢,只有1COUNT會減少結果嗎?

SELECT `blog_cate` . * , COUNT(blogi.blog_cate) AS num 
FROM (
`blog_cate` 
) 
JOIN `blogi` ON `blogi`.`blog_cate` = `blog_cate`.`blogi_cate_url` 

結果:

+----+------------------+----------------+-----+ 
| id | blogi_cate_title | blogi_cate_url | num | 
+----+------------------+----------------+-----+ 
| 1 | Базы данных  | batabase  | 3 | 
+----+------------------+----------------+-----+ 

而同樣的查詢,但沒有一個COUNT

SELECT `blog_cate` . * 
FROM (
`blog_cate` 
) 
JOIN `blogi` ON `blogi`.`blog_cate` = `blog_cate`.`blogi_cate_url` 

返回我3條記錄:

+----+------------------+----------------+ 
| id | blogi_cate_title | blogi_cate_url | 
+----+------------------+----------------+ 
| 1 | Базы данных  | batabase  | 
| 1 | Базы данных  | batabase  | 
| 3 | Разработка  | razrabotka  | 
+----+------------------+----------------+ 

是否可以使用COUNT並且有正常結果?

p.s.表格:

+----+------------+ 
| id | blog_cate | 
+----+------------+ 
| 1 | batabase | 
| 2 | batabase | 
| 3 | razrabotka | 
+----+------------+ 

+----+------------------+----------------+ 
| id | blogi_cate_title | blogi_cate_url | 
+----+------------------+----------------+ 
| 1 | Базы данных  | batabase  | 
| 2 | PHP    | php   | 
| 3 | Разработка  | razrabotka  | 
+----+------------------+----------------+ 

回答

1

COUNT()與出團分組會將所有記錄進行分組併產生它們的計數。將更多字段添加到select將只顯示第一條記錄的詳細信息

+0

所以我只需要添加一個組? – Smash

+0

我不確定您的問題中「正常」結果的含義。請在查詢結束時創建一個您想要的示例結果集,並根據需要顯示最佳組合 – Ray

+0

我認爲在使用GROUP BY的第一個查詢中可以:SELECT'blog_cate'。 *,COUNT(blogi.blog_cate)AS號 FROM( 'blog_cate' ) JOIN'blogi' ON'blogi'.'blog_cate' ='blog_cate'.'blogi_cate_url' GROUP BY(blogi.blog_cate) – Smash

1

您可以構建一個查詢以獲取三行和一個查詢以獲取計數結果,並通過交叉連接將它們連接起來以將每個詳細信息行與計數行。