次の 2 つのクエリを検討してください。
SELECT *, 'b' AS b FROM someTable ORDER BY a ASC LIMIT 1;
SELECT *, MAX(a) AS maxA FROM someTable ORDER BY a ASC LIMIT 1;
前のクエリは、a
期待どおり、最小値の行を返します。後者のクエリは、ディスクに格納されている最初の行 (通常は主キーの値が最も小さい行) を返します。どうすればこれを回避できますか? 私の意図は、最も低い列の行全体を取得することですa
値 (複数ある場合、必要なのは 1 つだけで、どちらでもかまいません)。さらに、最も高い年齢の値が必要です。完璧な世界では、2 つのクエリを実行することになりますが、このアプリケーションではオブジェクトがシリアル化される方法が原因で、私のものではない多くのコードをリファクタリングせずには実行できません。実際には、MySQL エンジン自体が 2 回クエリを実行する必要があるかどうかは気にしません。重要なのは、出力が 1 行で返されることです。残念ながら、このクエリのストアド プロシージャを作成することはできません。はい、*
演算子は重要です。必要なフィールドをリストすることはできません。そして、行が多すぎてすべてを返すことができません!
この質問は前の質問と表面的には似ていますが、そこで尋ねられた質問は形式が正しくなく、あいまいであったことに注意してください。したがって、すべての回答は私の意図ではない問題に対処していました (どんなに有用であったとしても、私は多くのことを学びました。その通りになりました)。この質問は、意図した質問をより明確にするため、さまざまな回答を引き付けるはずです。