使用单个查询检索表中所有列的最大值的正确方法是什么?感谢。
澄清:同一查询应该适用于任何表,即列名不应硬编码到其中。
答案 0 :(得分:5)
SELECT max(col1) as max_col1, max(col2) as max_col2 FROM `table`;
答案 1 :(得分:0)
我认为(但很高兴被证明是错误的)你必须至少知道表格中的列数,但是你可以这样做:
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;
显然你失去了索引的任何好处。
答案 2 :(得分:0)
你将不得不分两步完成 - 一个检索表的结构,然后是第二步,检索每个的最大值
在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....