Mysql 每个ID的最新日期

Mysql 每个ID的最新日期,mysql,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 1.5 2017-04-16 2 1.1 2017-03-12 3 5.0 2017-01-23 4 3.

我正试图通过以下查询提取具有最新日期的ID列表:

SELECT DISTINCT
    A.ID,
    A.Price,
    A.Date
FROM
    shop A
WHERE
    A.ID <> '0'
    AND A.Price > '0'
但以下是期望的输出:

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

提前感谢

在不使用分析函数的情况下实现这一点的标准方法是将shop加入一个子查询,该子查询标识每个ID的最新记录


如果没有一个连接的子查询,它不是同样工作吗?仍然按id分组,并将MAXdate作为选择选项之一?不,我不认为你所想的会起作用。您删除的答案也将不起作用。
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
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