1

特定の列の最大値を取得する必要があります。これは私がturorialで得た私のコ​​ードです。

$query = "SELECT type, MAX(ID) FROM sessions GROUP BY Status"; 

$result = mysql_query($con, $query) or die(mysql_error());

// Print out result
while($row = mysql_fetch_array($result)){
echo "The biggest session ID is " .$row['MAX(ID)'];
echo "<br />";
}

テーブルで最大の ID 番号を取得する必要があります。ステータスは、ID 列で最大数を見つけることとは無関係であるべきだと私が思うもう 1 つの列です。私は何を間違っていますか?

4

4 に答える 4

5

テーブル内の最大 ID を探している場合、クエリは次のようになります。

 SELECT max(ID) from sessions;

列ごとにグループ化すると、ステータスの一意の値ごとに最大 ID が得られます。意味のある結果を得るためにステータス別にグループ化する場合は、それを選択フィールドの 1 つとして指定する必要があります。

 SELECT Status, max(ID) from sessions group by Status
于 2013-07-30T14:08:21.253 に答える
0

MAX(ID) 関数呼び出しをクエリ内の列名にエイリアスします。

SELECT type, MAX(ID) AS max_id FROM sessions GROUP BY status
于 2013-07-30T14:09:21.223 に答える
0

最大の ID を持つ特定の行から完全なデータを取得する場合は、次のようにします。

 $query = "SELECT type, MAX(ID) 
           FROM sessions 
           WHERE ID = MAX(ID) 
           GROUP BY Status";
于 2013-07-30T14:11:23.907 に答える
0

ステータスは、ID 列で最大数を見つけることとは無関係であるべきだと私が思うもう 1 つの列です。

問題は、句ごとにグループごとMAX()最大 ID を返す集計関数であることです。したがって、SELECTを実行してから. タイプごとの最大IDが必要な場合は、.GROUP BYtype, MAX(ID)GROUP BY StatusGROUP BY type

機能が悪用される可能性がある非常にまれな高度な状況を除いて、列 ( などtype)を選択してから別のGROUP BYもの ( など) を選択することは意味がありませんStatus。実際、ほとんどのデータベースではこれを行うことができません。一部の人々は、mysql がこのタイプのクエリをまったく許可するのはバグ/悪い機能だと考えています。

于 2013-07-30T14:12:10.553 に答える