好吧,我刚刚遇到一种奇怪的行为,这是我之前从未见过或未曾注意到的。
我正在使用此查询:
SELECT *, COUNT(*) AS pages FROM notis WHERE cid = 20 ORDER BY nid DESC LIMIT 0, 3
…阅读3个项目,但同时我想获取总行数。
…当我使用count时,查询仅返回一行,但是如果我删除 COUNT(*) AS pages-我会得到3行。显然,我在这里错过了一些东西。
COUNT(*) AS pages
是的,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方言。