使用Count时,mysql仅返回一行

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

我正在使用此查询:

  SELECT *, 

COUNT(*) AS pages

FROM notis

WHERE cid = 20

ORDER BY nid DESC

LIMIT 0, 3

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

回答:

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

回答:

是的,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方言。

以上是 使用Count时,mysql仅返回一行 的全部内容, 来源链接: utcz.com/qa/427678.html

回到顶部