문제

단일 쿼리가있는 테이블에서 모든 열의 최대 값을 검색하는 올바른 방법은 무엇입니까? 감사.

설명 : 모든 테이블에서 동일한 쿼리가 작동해야합니다. 즉, 열 이름은 하드 코딩되지 않아야합니다.

도움이 되었습니까?

해결책

두 단계로해야 할 것입니다 - 하나는 테이블의 구조를 검색하고, 두 번째 단계가 각각의 최대 값을 검색합니다.

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