簡體   English   中英

如何顯示MySQL中GROUP BY計數大於1的所有結果?

[英]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

我認為您應該使用HAVING

SELECT email, COUNT(*) AS num  
FROM collectors_users
WHERE subscribed != 'NO'
AND lastLogin IS NULL
GROUP BY email
ORDER BY dateadded DESC
HAVING COUNT(*) > 1; 

這個問題可以幫助你理解為什么HAVING而不是WHERE

在哪里與擁有

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM