3

単一のクエリでテーブル内のすべての列の最大値を取得する正しい方法は何ですか? ありがとう。

明確化: 同じクエリがどのテーブルでも機能する必要があります。つまり、列名をテーブルにハードコーディングしないでください。

4

3 に答える 3

5
SELECT max(col1) as max_col1, max(col2) as max_col2 FROM `table`;
于 2008-12-08T10:35:52.043 に答える
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;

明らかに、インデックス作成のメリットが失われます。

于 2008-12-08T10:54:50.367 に答える
0

2 つのステップでそれを行う必要があります。1 つはテーブルの構造を取得するため、2 番目のステップはそれぞれの最大値を取得するためです。

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....
于 2008-12-08T11:06:39.283 に答える