一尘不染

使用Count时,mysql仅返回一行

mysql

好吧,我刚刚遇到一种奇怪的行为,这是我之前从未见过或未曾注意到的。

我正在使用此查询:

  SELECT *, 
         COUNT(*) AS pages 
    FROM notis 
   WHERE cid = 20 
ORDER BY nid DESC 
   LIMIT 0, 3

…阅读3个项目,但同时我想获取总行数。

问题是…

…当我使用count时,查询仅返回一行,但是如果我删除 COUNT(*) AS pages-我会得到3行。显然,我在这里错过了一些东西。


阅读 769

收藏
2020-05-17

共1个答案

一尘不染

是的,count是一个聚合运算符,它仅返回一行(没有group by子句)

也许做两个单独的查询?让该行返回数据和总行数是没有意义的,因为该数据不属于一起。

如果您真的想要它,可以执行以下操作:

SELECT *, (select count(*) FROM notis WHERE cid=20) AS count FROM notis WHERE cid=20 ORDER BY nid DESC LIMIT 0,3

或这个:

SELECT N.*, C.total from notis N join (select count(*) total FROM notis WHERE cid=20) C WHERE cid=20) AS count FROM notis WHERE cid=20 ORDER BY nid DESC LIMIT 0,3

嵌套表达式的方差取决于您的SQL方言。

2020-05-17