0

したがって、属性パス(重複または複数の等しいエントリを持つことができます)、名前、およびkmsを持つcitysというテーブルがあり、最も高いkmsのパスに対してそれぞれのエントリが1つだけになるようにフィルタリングする必要があります。私が今持っているのは

SELECT cities.* 
FROM cities, categories 
group by cities.path , cities.kms 
ORDER BY cities.kms desc

問題は、パスの重複したエントリが返されることです(これは必要ありません)。また、必要なようにkm単位で並べ替えられません。私は何をすべきか?

4

2 に答える 2

3

categoriesクエリにテーブルの目的がないので、回答から除外しました。

SELECT c1.path, c1.name, c1.kms
    FROM cities c1
        INNER JOIN (SELECT c2.path, MAX(c2.kms) AS Maxkms
                        FROM cities c2
                        GROUP BY c2.path) q
            ON c1.path = q.path
                AND c1.kms = q.Maxkms
于 2012-09-11T14:51:32.547 に答える
1

GROUP BY pathのみMAX(kms)

SELECT cities.path, MAX(cities.kms)
FROM cities
GROUP BY cities.path
ORDER BY cities.kms desc

ORDER BYkmsタイプがない場合を除いて、で並べ替える必要があります。数値は文字列である可能性があります。そのタイプを確認してください。

于 2012-09-11T14:51:55.370 に答える