0

我有一张桌子 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 在之前的选择中。

此查询非常繁重,例如,是否有其他使用正确连接的解决方案?

4

1 回答 1

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
于 2013-08-12T10:11:37.723 回答