带有单个查询的表中所有列的最大值的最大值的正确方法是什么?谢谢。

澄清:相同的查询应在任何表上使用,即不需要将列名编码为其。

有帮助吗?

解决方案

您将必须分两个步骤进行操作 - 一个要检索表的结构,然后是第二步,以检索每个表的最大值

在PHP中:

$table = "aTableName";
$columnsResult = mysql_query("SHOW COLUMNS FROM $table");

$maxValsSelect = "";
while ($aColumn = mysql_fetch_assoc($columnsResult)) {
  if (strlen($maxValsSelect) > 0) {
    //Seperator
    $maxValsSelect .= ", ";
  }  

  $maxValsSelect .= "MAX(" . $aColumn['Field'] . ") AS '" . $aColumn['Field'] . "'";
} 

//Complete the query
$maxValsQuery = "SELECT $maxValsSelect FROM $table";
$maxValsResult = mysql_query($maxValsQuery);

//process the results....

其他提示

SELECT max(col1) as max_col1, max(col2) as max_col2 FROM `table`;

我认为(但很乐意被证明是错误的),您必须至少知道表中的列数,但是您可以这样做:

select max(c1),max(c2),max(c3),max(c4),max(c5)
from (
    select 1 c1, 1 c2, 1 c3, 1 c4, 1 c5 from dual where 0
    union all
    select * from arbitrary5columntable
) foo;

显然,您失去了索引的任何好处。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top