每个ID的最新日期

时间:2017-04-23 04:35:01

标签: mysql

我正在尝试使用以下查询提取最新日期的ID列表:

SELECT DISTINCT
    A.ID,
    A.Price,
    A.Date
FROM
    shop A
WHERE
    A.ID <> '0'
    AND A.Price > '0'

示例输出:

ID  Price     Date
1   2.2     2017-03-12
1   1.5     2017-04-16
2   2.0     2016-03-12
2   1.1     2017-03-12
3   5.0     2017-01-23
4   3.5     2016-08-05

但以下是所需的输出:

ID  Price     Date
1   1.5     2017-04-16
2   1.1     2017-03-12
3   5.0     2017-01-23
4   3.5     2016-08-05

提前致谢

1 个答案:

答案 0 :(得分:1)

在不使用分析函数的情况下接近此方法的规范方法是将shop加入到子查询中,该子查询标识每个ID的最新记录。

SELECT s1.*
FROM shop s1
INNER JOIN
(
    SELECT ID, MAX(Date) AS max_date
    FROM shop
    WHERE ID <> 0 AND Price > 0    -- not sure about this condition
    GROUP BY ID
) s2
    ON s1.ID   = s2.ID AND
       s1.Date = s2.max_date