2013-01-17 59 views
-1

返回組數量的最佳方式是什麼?我的模式沒有什麼特別的; table2包含一個FK引用表1。以下似乎工作。有任何問題嗎?有更好的方法嗎?謝謝獲取MySQL GROUP的數量

SELECT COUNT(*) FROM (
SELECT COUNT(*) 
FROM table1 AS t1 
INNER JOIN table2 AS t2 ON t2.t1_id=t1.id 
WHERE t1.x=1 AND t2.y=1 
GROUP BY t2.z 
) AS grouping 
+0

您是否想知道子查詢返回了多少行? – Strawberry

+0

@Strawberry。我並不關心每個子查詢返回多少行。我只使用了第二個COUNT(*),因爲這些查詢是PHP生成的,而且它比記住在SELECT中包含哪個列更容易...嘿,爲什麼不只是SELECT 1而不是SELECT COUNT(*)?感謝您讓我思考! – user1032531

回答

1

不,您的解決方案很好。

另一種方式是

SELECT COUNT(DISTINCT t2.z) 
FROM table1 AS t1 
INNER JOIN table2 AS t2 ON t2.t1_id=t1.id 
WHERE t1.x=1 AND t2.y=1 

這也將包括NULL。

manual

骨料(摘要)功能,諸如COUNT(),MIN()和SUM()忽略NULL值。這個例外是COUNT(*),它計數行而不是單個列值。

+0

我喜歡你的解決方案而不是我的解決方案(只要它能工作!)。我相信它會起作用,但會先測試它。謝謝! – user1032531

+0

如果't2.z'列可以有'NULL'值呢? –

+0

@ypercube感謝提醒我。添加了這個答案。 – fancyPants