[英]How do I show all results where the GROUP BY count is greater than 1 in MySQL?
這是我的MySQL查詢及其返回的內容:
SELECT email, COUNT(*) AS num
FROM collectors_users
WHERE subscribed != 'NO'
AND lastLogin IS NULL
GROUP BY email
ORDER BY dateadded DESC;
我只想返回num> 1的結果。我試圖像這樣更改查詢,但是說num
不是可識別的列是行不通的:
SELECT email, COUNT(*) AS num
FROM collectors_users
WHERE subscribed != 'NO'
AND lastLogin IS NULL
AND num > 1
GROUP BY email
ORDER BY dateadded DESC;
如果num> 1,如何返回結果?
在GROUP BY子句之后和ORDER BY子句之前,添加以下內容:
HAVING COUNT(*) > 1
在准備好所有行之后,在LIMIT
子句之前, HAVING
子句幾乎在執行計划中最后一次應用。 這對於在訪問行時無法檢查的條件(但僅在訪問行之后才可以檢查的條件)最為有用,例如像COUNT(*)之類的聚合函數,盡管它可以用於非聚合。
使用HAVING
子句。 或另一種方式:
SELECT * FROM
(SELECT email, COUNT(*) AS num
FROM collectors_users
WHERE subscribed != 'NO'
AND lastLogin IS NULL
GROUP BY email
ORDER BY dateadded DESC;
) T
WHERE num>1
SELECT email, COUNT(*) as num
FROM collectors_users
WHERE subscribed != 'NO'
AND lastLogin IS NULL
GROUP BY email
HAVING COUNT(*) > 1
您可以使用Haveing子句。
SELECT email, COUNT(*) AS num
FROM collectors_users
WHERE subscribed != 'NO'
AND lastLogin IS NULL
GROUP BY email
HAVING count(*) > 1
ORDER BY dateadded DESC;
有關更多信息: http : //www.w3schools.com/sql/sql_having.asp
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.