我有一些PHP代码可以在MySQL表上运行用户生成的SQL。查询可能性有限,但可以是,例如
SELECT City, Country, count(*) FROM Table ... GROUP BY City, Country
或
SELECT count(*) AS Count, Role, Country FROM Table ... GROUP BY Role, Country
或
SELECT count(*), TicketType, City, SUM(Quantity) AS 'Total Quantity' FROM Table ... GROUP BY TicketType, City
等等。
在显示查询结果时,如果列是分组字段(例如COUNT或SUM或AVG等),我想采取一种操作。
除解析查询外,有没有办法确定哪些字段是结果集中的分组字段?我正在使用mysqli和PHP
答案 0 :(得分:0)
这很简单我想,您可以在SELECT子句中选择的唯一字段是分组在Group By子句中或按聚合函数分组的字段。
所以当你使用
时 SELECT City, Country, count(*) FROM Table ... GROUP BY City, Country
您的结果集将有多行,每行包含三列:city,country,count(*)。城市和国家是按照分组的字段。
答案 1 :(得分:0)
一般来说,答案是否定的。 您从db收到的是字段名称和值。如果不解析原始查询,则无法确定哪些字段是聚合,哪些字段不是聚合。
可能在您的情况下,您可以使用约束。例如:
但可能以最佳/最稳定的方式处理您的问题以获得对查询生成的更多控制,并设置您需要的显式约束或保存稍后您需要的详细信息。
也许您可以尝试使用此功能:http://www.php.net/manual/en/pdostatement.getcolumnmeta.php 但我认为这不会令人满意。