[英]Combine two SQL Queries efficiently
我有兩個查詢:
1)
SELECT COUNT(*) AS total, COUNT(supporter) AS done FROM Supports;
2)
SELECT supporter, COUNT(supporter) AS amount FROM Supports
GROUP BY supporter ORDER BY amount DESC LIMIT 1;
如何有效地結合它們?
這是表格的樣子:
+-----------------------------+
| id | name | supporter |
+-----------------------------+
| 1 | user1 | sup1 |
| 2 | user1 | sup2 |
| 3 | user1 | NULL |
| 4 | user2 | sup1 |
| 5 | user2 | sup3 |
+-----------------------------+
由於需要總數,因此必須使用子查詢來合並為一個查詢。 將其包括在FROM子句中。
SELECT supporter, COUNT(supporter) AS amount, total, done
FROM Supports,
(SELECT COUNT(*) AS total, COUNT(supporter) AS done FROM Supports) totals
GROUP BY supporter
ORDER BY amount DESC
LIMIT 1;
我相信這是您要尋找的:
SELECT
(SELECT COUNT(*) FROM Supports) as total,
(SELECT COUNT(supporter) FROM Supports) as done,
supporter,
COUNT(*) AS amount
FROM Supports
GROUP BY supporter
ORDER BY amount;
結果看起來像這樣: http : //sqlfiddle.com/#!9/9e4ee/9
total done supporter amount
5 4 sup3 1
5 4 sup2 1
5 4 NULL 1
5 4 sup1 2
SELECT a.total, a.done, b.supporter, b.amount
( SELECT COUNT(*) AS total,
COUNT(supporter) AS done
FROM Supports
) AS a
JOIN
( SELECT supporter,
COUNT(supporter) AS amount
FROM Supports
GROUP BY supporter
ORDER BY amount DESC
LIMIT 1
) AS b;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.