質問: sqlは、列の最大値を持つ行のみを選択します 私は文書用のこの表を持っています(簡略版はこちら):+------+-------+--------------------------------------+ | id | rev | content | +------+-------+--------------------------------------+ | 1 | 1 | ... | | 2 | 1 | ... | | 1 | 2 | ... | | 1 | 3 | ... | +------+-------+--------------------------------------+ idごとに1行、最大のrevのみを選択するにはどうすればよいですか。 上記のデータを使用すると、結果には2つの行([1, 3, ...]と[2, 1, ..])が含まれるはずです。私は mysql を使っています。現在私はwhileループのチェックを使って、結果セットからの古いrevを検出して上書きしています。しかし、これが結果を達成するための唯一の方法ですか? _ sql _ 解決策はありませんか? 更新 答えが示すように、issqlの解決策、そして ここではsqlfiddleのデモ があります。 更新2 上記のsqlfiddle、質問の支持率が回答の支持率を上回っています。これは意図していません。受け入れられた答え.
回答: この問題にはnot existベースの解決策を使用するのが好きです。select id, rev from yourtable t where not exists ( select * from yourtable t where t.id = id and rev > t.rev )