我有以下SQL
select year(createdat), count(id) from memberevents where memberid=22 group by year(createdat)
并返回以下结果
year(created) count(id)
============ =========
2013 3
2014 1
但是我想只返回sql的recordcount,所以在那种情况下它应该返回
totalrecords
============
2
但是如何只使用一个sql呢?感谢
答案 0 :(得分:2)
您可以通过将查询引用为内联视图
来从结果集中获取计数SELECT COUNT(1) FROM ( your_query_here ) alias
例如,在您的问题中使用查询,您可以这样做:
SELECT COUNT(1)
FROM (
select year(createdat)
, count(id)
from memberevents
where memberid=22
group by year(createdat)
) a
但是在这种情况下可以获得没有内联视图的等效结果:
SELECT COUNT(DISTINCT year(createdat))
FROM memberevents
WHERE memberid=22
答案 1 :(得分:1)
只需计算符合过滤条件的不同年数即可。 Ne需要嵌套选择。
SELECT COUNT(DISTINCT year) FROM memberevents WHERE memberid = 22
或者,如果您的目的是运行任意查询,然后又能够获得与该查询相关联的行数,您可以使用以下相同的连接进行跟进:
SELECT FOUND_ROWS();
请注意,如果您有LIMIT
语句,这将无效,因为这将返回所有找到的行,而不是应用LIMIT
后返回的行数。
答案 2 :(得分:0)
试试这个:
SELECT COUNT(*)
FROM
(
SELECT
YEAR(createdat) ,
COUNT(id)
FROM memberevents
WHERE memberid = 22
GROUP BY YEAR(createdat)
) a