如何在自己的查询中获得一个值的总出现?

时间:2009-04-22 15:05:43

标签: mysql

假设我们有这个查询

SELECT * FROM table

这是它的结果。

id | user_id
------------
1  | 1
------------
2  | 1
------------
3  | 2
------------
4  | 1

我如何得到user_id作为另一个字段出现的频率计数(没有一些主要的SQL查询)

id | user_id | count
--------------------
1  | 1       | 3
--------------------
2  | 1       | 3
--------------------
3  | 2       | 1
--------------------
4  | 1       | 3

我们目前在代码中有这个值,但我们正在对此表实现排序,我希望能够在SQL查询中进行排序。

顺便说一句,如果没有一些主要技巧,这是不可能的,我们只是跳过那个领域的排序。

2 个答案:

答案 0 :(得分:3)

我只想在最后添加一个子查询,我相信:

SELECT
    t.id,
    t.user_id,
    (SELECT COUNT(*) FROM table WHERE user_id = t.user_id) AS `count`
FROM table t;

答案 1 :(得分:0)

SELECT o.id, o.user_id, (
    SELECT COUNT(id) 
    FROM table i 
    WHERE i.user_id = o.user_id 
    GROUP BY i.user_id
) AS `count`
FROM table o

我怀疑这个查询不是一个表演怪物,但它应该有效。