-1

テーブル :

========================================
|id| document_id | sentence_id | score |
========================================
|1 |   3         |     1       | 0.324 |
|2 |   3         |     2       | 0.201 |
|3 |   5         |     1       | 0.181 |
|4 |   5         |     2       | 0.402 |
========================================

document_idすべてで最大スコアを取得し、その結果を他のと比較したいと思いdocument_idます。私の目標は、document_id. so from the example, the result must be 5 3

$q = mysql_query("SELECT document_id, MAX(score) as max_score FROM `tb_score` GROUP BY document_id ");
while ($row = mysql_fetch_array($q)) {
   $min = $row['max_score'];
}

それでも間違った結果が得られます。私を助けてください。

4

3 に答える 3

1

あなたが説明していると思われるSQLは次のとおりです。

SELECT document_id
        , MAX(score) as max_score
    FROM tb_score
    GROUP BY document_id
    ORDER BY MAX(score) DESC --or max_score, I'm not sure which MySQL will accept.

それは役に立ちますか?

余談です が、 MySQL拡張機能はPHPで非推奨になっています。この作業を行うには、MySQLImprovedまたはPHPデータオブジェクトを使用する必要があります。

于 2012-10-10T03:41:35.727 に答える
1

SQLは次のようにする必要があります。

SELECT document_id, MAX(score) as max_score 
FROM `tb_score` GROUP BY document_id
ORDER BY max_score DESC
于 2012-10-10T03:52:24.667 に答える
1

でエイリアスをORDER BY使用することはできません。したがって、で使用する必要がありMAX(score)ますORDER BY。このような:

SELECT document_id ,MAX(score) as Highscore
FROM tb_score
GROUP BY document_id
ORDER BY MAX(score) DESC;

または、サブクエリを使用して同じことを行うことができます。

SELECT * FROM
(
SELECT document_id ,MAX(score) as Highscore
FROM tb_score
GROUP BY document_id
) A
ORDER BY Highscore DESC;

このSQLFiddleを参照してください

于 2012-10-10T04:16:50.817 に答える