SQL:使用max(count(()而不是LIMIT 1

时间:2016-01-12 20:31:46

标签: count group-by subquery max sql-order-by

目前我非常失望。我尝试使用几天而不是通过计数DESC和LIMIT 1只是最大值(count())。我知道这不太可能。必须有类似的东西。因为想象有两个相同的数。

SELECT display_name, location 
FROM users
WHERE id = (
    SELECT user_id
    FROM badges
    GROUP BY user_id
    ORDER BY count(id)  DESC
    LIMIT 1
) 

所以它可能很简单,但我不知道如何处理它。如果有人会帮助我真的很惊讶。

1 个答案:

答案 0 :(得分:0)

你可能想要:

SELECT display_name, location 
FROM users
WHERE id = (
    SELECT user_id
    FROM badges
    GROUP BY user_id
    HAVING count(user_id) = 1
) 

内部查询将选择只有一个徽章的所有用户

不确定您希望使用DESC实现什么,但是您可以在外部查询中使用它来对display_name或location上的结果进行ORDER,或者将id添加到select并选择它。

SELECT id, display_name, location 
FROM users
WHERE id = (
    SELECT user_id
    FROM badges
    GROUP BY user_id
    HAVING count(user_id) = 1
) 
ORDER BY id DESC