特定の列の最大値を持つ行を選択したい場合は、単純にこれを行うことができます
SELECT * FROM tablename WHERE columnname=(SELECT MAX(columnname) FROM tablename)
私の問題は 2 つあります。まず、この値が列ではなく、行を操作するストアド プロシージャの結果である場合、構文は何ですか? 何かのようなもの
SELECT * FROM tablename
WHERE CALL procname (???)
= (SELECT MAX (CALL procname (???) FROM tablename)
このクエリを具体化するにはどうすればよいですか?
第 2 に、この単純な形式では、すべての行で 1 回呼び出して決定し、次に各行でもう一度呼び出して、各行に最大値があるかどうかをテストする可能性がprocname
あります。MAX(...)
これを最適化するにはどうすればよいですか?一時テーブルに何か関係があるのではないかと推測していますが、エンジンがどれほど賢いかはわかりません。維持するだけでよいCスタイルのforループのパフォーマンスと比較しています一度に 1 つの行の値。