我正在尝试编写一个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
答案 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可以自由地返回任意五行。