MySQL запрос для max () всех столбцов
Вопрос
Как правильно получить максимальные значения всех столбцов в таблице с помощью одного запроса? Спасибо.
Пояснение: один и тот же запрос должен работать с любой таблицей, т. е. имена столбцов не должны быть жестко закодированы в нее.
Решение
Вам нужно будет сделать это в два этапа - один, чтобы получить структуру таблицы, а затем второй шаг, чтобы получить максимальные значения для каждого
В 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;
Очевидно, что вы теряете все преимущества индексирования.
Не связан с StackOverflow