根据列值过滤结果

时间:2016-08-02 12:03:25

标签: mysql sql

这看起来很简单。但是花了一些时间后,我想到了分享这个。我有以下查询。

SELECT *
FROM UPGRADE_HISTORY
ORDER BY MERCHANT_ID, RELEASE_ID

Release_ID列出了与特定商家相对应的所有版本。就我而言,我需要检索每个商家最新RELEASE_ID对应的结果集。

我怎样才能做到这一点?

4 个答案:

答案 0 :(得分:1)

我认为这就是你想要的:

select uh.*
from upgrade_history uh
where uh.release_id = (select max(uh2.release_id)
                       from upgrade_history uh2
                       where uh2.merchant_id = uh.merchant_id
                      );

每个商家返回一行,其中包含最大的发布ID值。

答案 1 :(得分:0)

预期的查询是

SELECT uh.* 
FROM UPGRADE_HISTORY uh
Where uh.RELEASE_ID = (SELECT MAX(RELEASE_ID) 
                       FROM UPGRADE_HISTORY 
                       WHERE MERCHANT_ID=uh.MERCHANT_ID) 
ORDER BY uh.MERCHANT_ID, uh.RELEASE_ID

答案 2 :(得分:0)

尝试此查询(应该可以):

SELECT 
    *
FROM UPGRADE_HISTORY UH1
INNER JOIN 
(
    SELECT 
        MERCHANT_ID
        ,MAX(RELEASE_ID) RELEASE_ID
    FROM UPGRADE_HISTORY
    GROUP BY MERCHANT_ID
) UH2 ON 
UH2.MERCHANT_ID = UH1.MERCHANT_ID
AND UH2.RELEASE_ID = UH1.RELEASE_ID

答案 3 :(得分:0)

Matchers.isA(RequestCodes.Code.RequestAnnotation.getClass())