首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >有没有办法区分哪些字段是MySQL结果中的分组字段(PHP)

有没有办法区分哪些字段是MySQL结果中的分组字段(PHP)
EN

Stack Overflow用户
提问于 2014-01-03 01:56:45
回答 2查看 42关注 0票数 0

我有一些将在MySQL表上运行用户生成的SQL的PHP代码。查询的可能性是有限的,但可能是,例如

代码语言:javascript
运行
复制
SELECT City, Country, count(*) FROM Table ... GROUP BY City, Country

代码语言:javascript
运行
复制
SELECT count(*) AS Count, Role, Country FROM Table ... GROUP BY Role, Country

代码语言:javascript
运行
复制
SELECT count(*), TicketType, City, SUM(Quantity) AS 'Total Quantity' FROM Table ... GROUP BY TicketType, City

诸若此类。

在显示查询结果时,如果列是分组字段(例如COUNT或SUM或AVG等),我希望采取一种类型的操作。

除了解析查询之外,还有什么方法可以确定哪些字段是结果集中的分组字段?我正在使用mysqli和PHP

EN

回答 2

Stack Overflow用户

发布于 2014-01-03 02:13:08

我想这很简单,您可以在select子句中选择的字段是那些在Group By子句中分组或按聚合函数分组的字段。

所以当你使用

SELECT City, Country, count(*) FROM Table ... GROUP BY City, Country

您的结果集将有多行,每行有三列:city、country、count(*)。城市和国家是按分组的字段。

票数 0
EN

Stack Overflow用户

发布于 2014-01-03 02:17:07

一般来说,答案是否定的。从db接收的是字段名称和值。如果不解析原始查询,您就无法确定哪些字段是聚合,哪些不是。

在您的情况下,可能会有一些可以使用的约束。例如:

  • 如果数字只能生成字段,则可以检查结果的内容。(当然,这是非常unstable.)
  • Maybe的,您可以使用字段的名称作为提示。也许它包含一些与聚合相关的内容。(sum,count,total,...)

但可能是以最好/最稳定的方式来处理问题,以获得对查询生成的更多控制,并设置所需的显式约束或保存稍后所需的详细信息。

也许你可以尝试使用这个函数:http://www.php.net/manual/en/pdostatement.getcolumnmeta.php,但我不认为它会令人满意。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20888818

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档