sql使用连接优化查询

时间:2013-08-12 09:28:08

标签: sql

我有一个表productHistory

productHistory (id_H , id_product , name , tsInsert);

我想从表productHistory获取给定期间的最后一个产品(开始,结束): tsInsert必须在开始和结束之间。

我可以这样做:

select max(id_H) 
from productHistory 
where tsInsert>=:start and tsInsert <=:end 
group by id_product;

然后从productHistory中选择所有,其中id_H在上一个选择中。

此查询非常繁重,是否还有其他使用右连接的解决方案?

1 个答案:

答案 0 :(得分:0)

我尝试了这个解决方案:

SELECT * FROM productHistory  x

    INNER JOIN
    (
        SELECT  MAX(id_H) as maxId
        FROM productHistory 
        GROUP id_product
    ) y

ON x.id_H = y.maxId
and x.TSINSERT >=:start and x.TSINSERT <=:end