计算并获取 mysqli/php 中的所有记录

Posted

技术标签:

【中文标题】计算并获取 mysqli/php 中的所有记录【英文标题】:count and get all records in mysqli/php 【发布时间】:2015-11-24 07:41:55 【问题描述】:

我尝试计数并获取name = "john"的所有记录

我试试这个:

SELECT * COUNT(id) count FROM profile WHERE name = 'john'

但是我收到了这个错误:

您的 SQL 语法有错误;检查手册 对应于您的 mysql 服务器版本,以便使用正确的语法 在第 1 行的 'COUNT(id) count FROM profile WHERE name = 'john'' 附近

怎么了?

【问题讨论】:

你真的需要每一行的计数吗?您是否考虑过使用简单的SELECT * FROM profile WHERE name = 'john' 获取所有记录,然后只获取匹配的行数? 【参考方案1】:

如果您想获取所有记录以及总计数,那么您可以使用子查询:

SELECT *, (SELECT COUNT(id) 
           FROM profile 
           WHERE name = 'john') as count
FROM profile 
WHERE name = 'john'

此查询将返回 profile 的所有记录,其中包含 name = 'john'。对于返回的每条记录,也会选择总记录数(具有name = 'john')。

【讨论】:

【参考方案2】:

对于所有有计数的记录,使用内部查询:-

SELECT *, (SELECT COUNT(id) 
FROM profile 
WHERE name = 'john') as count
FROM profile 
WHERE name = 'john'

【讨论】:

第一次查询无效。你不能像没有 GROUP BY 的那样将聚合函数与列 (*) 混合。

以上是关于计算并获取 mysqli/php 中的所有记录的主要内容,如果未能解决你的问题,请参考以下文章

MySQLi PHP:使用 MySQLi 检查 SQL INSERT 查询是不是完全成功

是否有内置函数可以跨所有记录获取数组字段中的所有唯一值?

ExtJs分组中的clearfilter后如何获取特定组的所有记录

如何一次获取 100 条记录,直到使用 Spring JPA 的 oracle 中的所有记录?

SQL Server Compact - 计算记录/获取数据库中所有表使用的空间

PostgreSQL 中的表锁