문제
단일 쿼리가있는 테이블에서 모든 열의 최대 값을 검색하는 올바른 방법은 무엇입니까? 감사.
설명 : 모든 테이블에서 동일한 쿼리가 작동해야합니다. 즉, 열 이름은 하드 코딩되지 않아야합니다.
해결책
두 단계로해야 할 것입니다 - 하나는 테이블의 구조를 검색하고, 두 번째 단계가 각각의 최대 값을 검색합니다.
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