2017-02-09 125 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); 

產生的問題是從在子查詢的子句是一樣的,在主查詢的過濾器過濾器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的隨機值。 –

相關問題