最大値と等しい値を持つ一時テーブルからすべての行を選択したいと思います。
一時テーブルのテスト
id | value
1 | 7
2 | 6
3 | 7
期待される結果:
id | value
1 | 7
3 | 7
私はすでにいくつかのことを試しましたが、「同じクエリで TEMPORARY テーブルを複数回参照することはできません」という理由で、これまでのところすべての試み (同じ内容の別の一時テーブルを作成することを除く) が失敗しました。(ソース: http://dev.mysql.com/doc/refman/5.0/en/temporary-table-problems.html )。テーブルとその内容をコピーするよりも「エレガントな」方法でこれを行う可能性はありますか?
これまでにテストしたこと:
SELECT table1.* FROM test table1 LEFT JOIN test table2 ON table1.value < table2.value
WHERE table2.value IS NULL;
SELECT * FROM test WHERE value = (SELECT MAX(value) FROM test);
そして、これが私の現在の解決策です:
CREATE TEMPORARY TABLE test2 (...);
INSERT INTO test2 SELECT * FROM test;
SELECT * FROM test WHERE value = (SELECT MAX(value) FROM test2);