つのフィールドに基づいて、複数の行から1行を選択します(対応する異なる賞、私は与えられた国のリストについては、取得することができるようにしたい私はこの質問、賞のための1つの、関連テーブル持って
----------------------------------------
| award |
----------------------------------------
| id | name | URL | country_id | point |
----------------------------------------
1 | A | a | 1 | 120
2 | A | b | 0 | 60
3 | A | b | 2 | 80
4 | B | c | 0 | 50
5 | B | d | 1 | 70
を同じ賞には同じ名前が付いています)、列の最高値はpoint
です。
私はポイントDESCでリクエストを注文し、名前でグループ化しましたが、トリックはしませんでした。ポイント数も正しいURLも得られませんでした。
私はテーブルからすべてのデータを取得し、最良のポイント数の行だけを保持することで簡単に行うことができますが、SQLだけでそれを行う方法が必要です!
私が試した要求がされた:
SELECT name, URL, point FROM award WHERE country_id IN (0,1) ORDER BY point DESC GROUP BY name
それは私のために働いたが、同じ名前と同じ数の点で異なる行がある場合に問題がある可能性があります:URLが間違っている可能性が(よくない行から)。 – hellimac
この場合どの行を返すか(つまり、「良好な行」)グループにcountry_idを含めて参加させると、名前/国ごとに最大ポイントが得られます。それがあなたが探しているものかどうかはわかりません。 – markwatsonatx