2017-02-09 8 views
0

以下の質問があり、これがより良い方法で書き直せるかどうかを知りたがっていますか?このクエリを書くための最適化された、より良い方法はありますか?

SELECT COL1, COL2 FROM TABLE1 WHERE ID = 1 and COL4 = 1415 AND COL3 IN 
(SELECT MAX(COL3) FROM TABLE1 WHERE PRI = ID = 1 and COL4 = 1415); 

質問は、サブクエリのWHERE句が、メインクエリ内のフィルタと同じ場所にIDとCOL4をフィルタリング事実から生じます。

+0

より良い方法で書くことができますが、最も良い方法はサブクエリ – Strawberry

+0

を含めることです。これは[_groupwise max_](http://mysql.rjweb.org/doc.php/groupwise_max)の問題のようです。 –

答えて

0

あなたは使用することができます。

SELECT COL1, COL2,MAX(COL3) as mx FROM TABLE1 WHERE ID = 1 
    and COL4 = 1415 having mx=MAX(COL3); 

これは、余分なサブクエリを回避します。

+0

いいえ、それは動作しません。これにより、COL1とCOL2のランダムな値が得られます。 –

関連する問題