我正在浏览数据库中的最新五个条目。我还想显示旁边的条目总数。
目前我正在运行两个查询 - 第一个是获取最新的五个查询:
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
)时,它只返回一行。
谢谢!
答案 0 :(得分:3)
这应该会给你你所希望的东西:
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
答案 1 :(得分:0)
你可以将子选择拉为项目......
select foo, bar, (select count(*) from tableA) from tableA;
请记住,根据查询其余部分的复杂性,这可能是一个相当昂贵的选择。
答案 2 :(得分:0)
是的,方法很少: -
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 ...
这种方法比计数更好,然后加入。
提出的另一个答案是触发每行的子查询,
这不太理想。
或者您可以使用http://dev.mysql.com/doc/refman/5.0/en/information-functions.html#function_found-rows(两个查询)