如何从SQL语句中返回总记录

时间:2013-07-12 22:08:20

标签: mysql sql

我有以下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呢?感谢

3 个答案:

答案 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