Select 前 5 行并计数

Select the first 5 rows and get count

我正在尝试编写 mysql 查询: 首先 select 5 行然后用 where

计算

前select 5行 table

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

然后计算这个 table 其中 user_id =1

结果 = 3

你可以试试这样的东西

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

您似乎想同时显示两个不同的结果集。您需要为此使用 JOIN。像这样的东西会为你做的伎俩。

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

子查询将您的计数生成为单行结果集,并且 JOIN(缺少 ON 条件)将其放入其他结果集的每一行。

如果您想显示 table 中的五行,并让每一行提及该行中用户 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 可以随意 return 任意五行。