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 任意五行。
我正在尝试编写 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 任意五行。