我正在尝试使用以下查询提取最新日期的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
提前致谢
答案 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