选择前5行并计算

时间:2015-02-27 12:47:45

标签: mysql count

我正在尝试编写一个mysql查询: 首先选择5行,然后使用where

进行计数

首先选择5行 表

id user_id
--------
1  1
2  2
3  3
4  1
5  1
6  4
7  3
8  1

id user_id
----------
1  1
2  2
3  3
4  1
5  1

然后计算这个表user_id = 1

result = 3

2 个答案:

答案 0 :(得分:1)

你可以尝试类似的东西

Select count(*) From
(Select * From T
order by ID asc Limit 5) as child
where user_id = 1

答案 1 :(得分:1)

看起来您想要将两个不同的结果集一起呈现。你需要为此使用JOIN。这样的事情会为你做到这一点。

SELECT T.*,c.cnt
  FROM T
  JOIN ( SELECT COUNT(*) cnt FROM T where user_id = 1 ) c
 LIMIT 5

子查询将计数生成为一行结果集,而JOIN(缺少ON条件)将其放入另一个结果集的每一行。

如果您想从表中显示五行,并且每行都提到该行中用户ID的计数,则可以执行此操作。

SELECT T.*,c.cnt
  FROM T
  JOIN (  SELECT COUNT(*) cnt, user_id
            FROM T 
           GROUP BY user_id
       ) c ON T.user_id = c.user_id
 LIMIT 5

摘要(COUNT()等)查询和详细查询协同工作的方式有点错综复杂,但你会弄清楚。

请注意:如果你在没有先做ORDER BY的情况下进行LIMIT,那么MySQL可以自由地返回任意五行。