2017-02-09 98 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的随机值。 –

相关问题