当前位置: 首页 > 面试题库 >

使用Count时,mysql仅返回一行

钱京
2023-03-14
问题内容

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

我正在使用此查询:

  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方言。



 类似资料:
  • 问题内容: 我有这个简单的PHP代码: 它仅返回以下内容: 我的表中有3500多行,并且在PhpMyAdmin中运行SQL效果很好。 问题答案: 您的示例拼写错误 每次调用时以及行外时都会返回一行。通过在条件中为其分配变量来利用它,以发挥您的优势。在循环中,将是当前行。

  • 问题内容: 好的,我有以下代码: 然后,当我尝试回显内容时,只能回显输出第一项,但是如果我尝试回显,则会得到未定义的偏移量。 但是,如果我通过PHPMyAdmin运行以上查询,它将返回10个项目的列表。为什么不能将其识别为10个项的数组,让我回显0-9? 谢谢您的帮助。 问题答案: 那是因为数组代表返回结果集中的一行。您需要再次执行该功能以获得下一条记录。例:

  • 本文向大家介绍仅返回使用MySQL DISTINCT出现一定次数的字段?,包括了仅返回使用MySQL DISTINCT出现一定次数的字段?的使用技巧和注意事项,需要的朋友参考一下 要返回出现一定次数的字段,语法如下: 让我们首先创建一个表- 使用插入命令在表中插入一些记录- 使用select语句显示表中的所有记录- 这将产生以下输出- 以下是查询以返回使用MySQL DISTINCT出现一定次数的

  • 问题内容: 我每月都有一组职位。现在,我需要一个数组,其中包含每个月发布的帖子总数。我尝试下面的MySql查询,它的工作正常,但我期望0(零)几个月没有记录。在这里,它不返回0。 我读到COUNT()不会返回“ 0”,那么我该如何实现呢? 我尝试了IFNULL()和COALESCE(),但仍然得到相同的结果。请帮助此查询。谢谢你...... 结果: 预期结果(没有一月份的职位): 样本数据: 问题

  • 问题内容: 此代码仅返回一行,但应返回2行。我在phpMyAdmin中尝试了SQL,它完美返回了2行。我在这里做错了什么? 顺便说一句,上面的代码通过以下脚本将程序移至profile.php: 问题答案: 您需要遍历结果(如TheSmose所述) 并且 您需要将结果数组发送到模板而不是。 改变这个 对此 如果您不只是想要模板中的内容(并且您不需要PHP> = 5.3 ),那么您将需要在循环内构建自

  • 问题内容: 我有一个带有14个条目的表’Labs’。 查询返回“ 14”。 但是查询返回“ 0”(不像我期望的那样为13)。实际上,当我设置LIMIT行偏移值2、3、4等时,仍然返回“ 0”。 为什么是这样?有没有一种方法可以仅使用mysql确定指定偏移量后的行数? FWIW我正在使用MySQL 5.5.9和InnoDB数据库引擎。 问题答案: 在执行计数后将应用限制。 尝试以下方法: 请注意,在