我正在做一个项目,但是有问题。我有一个名为friends的表,该表具有三列idfrom_emailto_email(这是一个社交网站,“ from_email”是跟随“ to_email”的人)。我希望查询返回我关注的前5位好友的数量。我知道前5名的查询是:

SELECT
   to_mail,
   COUNT(*) AS friendsnumber
FROM
   friends
GROUP BY
   to_email
ORDER BY
   friendsnumber DESC
LIMIT 5


有任何想法吗?

我还想返回朋友,并按照他们的名字顺序排列相同数量的关注者。可能吗?

最佳答案

您应该使用COUNT(from_email)而不是COUNT(*);因为您要计算关注者数量,该数量由from_email表示。

因此,您的select子句将类似于:

SELECT to_email, COUNT(from_email) as magnitude


要获得您关注的最受欢迎的人,可以使用IN子句:

WHERE to_email IN (SELECT to_email FROM friends WHERE from_email='MY_EMAIL');


关于名称,您应将此查询与另一个包含name值的表联接。

既然您已经掌握了要点,我希望您可以尝试自己编写完整的查询=)

关于mysql - 使用where子句获取mysql中排名前5的最受欢迎的值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27954896/

10-13 04:28