簡體   English   中英

這個MySQL查詢總是返回預期的結果嗎?

[英]Does this MySQL query always return the expected result?

我寫了一個查詢如下:

  SELECT COUNT(*) AS count, email
    FROM sometable
GROUP BY email
ORDER BY count DESC 
   LIMIT 4

我有興趣看到表中四個最重復的電子郵件條目。 到目前為止,它似乎正好回歸我想要的:

count   email
12      very-duplicated@email.com
2       duped-twice@email.com
2       also-twice@email.com
1       single@email.com

當我不使用LIMIT ,我得到相同的結果(盡管有更多行具有count = 1)。 我想知道的是LIMIT 將來,當數字發生變化時,我上面的查詢是否仍然會返回最常用的四封電子郵件? 或者查詢是否需要掃描整個數據庫以保持准確?

(注意:我不是要防止重復,我正在嘗試查看最常用的電子郵件。)

我不確定。 但是如果您擔心,可以對子查詢應用限制:

select *
from 
(
  SELECT COUNT(*) AS count, email
  FROM sometable
  GROUP BY email
  ORDER BY count DESC 
)
limit 4

或者,您可以執行以下操作以查看所有重復的電子郵件地址(可能返回多於或少於4):

  SELECT COUNT(*) AS count, email
    FROM sometable
GROUP BY email
having COUNT(email) > 1
ORDER BY count DESC 

首先,查詢不僅會返回重復的條目。 看第四行,表示count = 1,這意味着它只在表中出現一次。 要列出重復記錄,您需要將查詢修改為 -

SELECT COUNT(*) AS count, email
FROM sometable
GROUP BY email
HAVING COUNT(*) > 1
ORDER BY count DESC     
LIMIT 4

然后,這將始終返回您表中提到的4個最重復的條目。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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