少し前までは意図したとおりに機能していたと思っていたクエリがあります。
次のクエリは、私の「プレーヤー」テーブルを通過し、その学校で自分の体重で最高のスキルを持つすべてのプレーヤーの「スターター」値を true に更新します。
たとえば、体重 X のプレーヤーが 500 人いる場合、同じ学校に属するすべてのプレーヤーが選択され、そのうち最高のスキルを持つプレーヤーの「スターター」値が true に更新されます。
UPDATE player
SET starter = 'TRUE'
WHERE NOT EXISTS
(
SELECT school, weight, skill
FROM player b "
WHERE b.school = player.school
AND b.weight = player.weight
AND b.skill > player.skill
)
AND player.game_id = 1
私が今遭遇した問題は、同じ学校から同じ体重で同じスキルを持つ 2 人のプレーヤーがいる場合、両方の「スターター」値が true に設定されていることです。
だから私の質問は、特定の学校の体重で 1 人のスターターのみを許可するには、このクエリに何を追加する必要があるかということです。
「年齢」という名前の列もありますが、可能であれば、同じスキルが発生する 2 つの低い年齢を選択したいと考えています。