计算总行数,同时在一个MySQL查询中选择这些行的子集?

计算总行数,同时在一个MySQL查询中选择这些行的子集?,mysql,Mysql,我正在浏览数据库中最近的五个条目。我还想在此旁边显示条目的总数 目前,我正在运行两个查询-第一个,以获取最新的五个查询: SELECT reference.id, reference.name FROM reference WHERE (status = 2 OR status = 3) ORDER BY reference.date LIMIT 5 第二,计算总数: SELECT COUNT(reference.status) AS complete_count FROM reference

我正在浏览数据库中最近的五个条目。我还想在此旁边显示条目的总数

目前,我正在运行两个查询-第一个,以获取最新的五个查询:

SELECT reference.id, reference.name
FROM reference
WHERE (status = 2 OR status = 3)
ORDER BY reference.date
LIMIT 5
第二,计算总数:

SELECT COUNT(reference.status) AS complete_count
FROM reference
WHERE (status = 2 OR status = 3)
有没有办法把这两者结合在一起?当我尝试向第一个查询的输出中添加另一列时(COUNT),它只返回一行


谢谢

您可以选择一个子项作为项目,以便

select foo, bar, (select count(*) from tableA) from tableA;
请记住,根据查询其余部分的复杂性,这可能是一个相当昂贵的选择。

是的,有几种方法:-

select reference.id, reference.name, b.complete_count
FROM reference
JOIN
(
 SELECT COUNT(reference.status) AS complete_count
 FROM reference
 WHERE (status = 2 OR status = 3)
) as b
WHERE ...
此方法更好,因为它先进行计数,然后进行联接

建议的另一个答案是触发每行的子查询,
这是不太理想的


或者您可以使用(两个查询)

这应该会给您带来希望:

SELECT reference.id, reference.name, COUNT(1) AS complete_count
FROM reference
WHERE status = 2
   OR status = 3
GROUP BY reference.id, reference.name
ORDER BY reference.date
LIMIT 5