返回組數量的最佳方式是什麼?我的模式沒有什麼特別的; 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
返回組數量的最佳方式是什麼?我的模式沒有什麼特別的; 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
不,您的解決方案很好。
另一種方式是
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(*),它計數行而不是單個列值。
我喜歡你的解決方案而不是我的解決方案(只要它能工作!)。我相信它會起作用,但會先測試它。謝謝! – user1032531
如果't2.z'列可以有'NULL'值呢? –
@ypercube感謝提醒我。添加了這個答案。 – fancyPants
您是否想知道子查詢返回了多少行? – Strawberry
@Strawberry。我並不關心每個子查詢返回多少行。我只使用了第二個COUNT(*),因爲這些查詢是PHP生成的,而且它比記住在SELECT中包含哪個列更容易...嘿,爲什麼不只是SELECT 1而不是SELECT COUNT(*)?感謝您讓我思考! – user1032531