我有点赶时间,所以我知道我可以自己寻找答案,但stackoverflow更快!:)
我有一个数据表,假设它是产品信息。该表跟踪产品数据的更新时间。如果我运行如下查询

SELECT * FROM productChangeLog where change = 'price changed'

我得到的结果就像
id  product  date       change
---------------------------------------------
236 product1 03/14/2011 'price changed'
241 product2 03/14/2011 'price changed'
242 product2 03/14/2011 'description changed'
512 product1 05/16/2011 'price changed'
517 product1 05/16/2011 'description changed'

我想做的是只为每种产品选择最新的“价格变化”。我需要向查询中添加什么,以便只获取第241行和第512行?id越高总是最近的更改
非常感谢!

最佳答案

SELECT t.max_id, t.product, pcl.date, pcl.change
    FROM (SELECT product, MAX(id) AS max_id
              FROM productChangeLog
              WHERE change = 'price changed'
              GROUP BY product) t
        INNER JOIN productChangeLog pcl
            ON t.max_id = pcl.id

关于mysql - mysql基于两个条件进行选择,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5903925/

10-08 22:38