Mysql获取当前最高价商品

标签 mysql groupwise-maximum

我正在寻找 20 个当前价格最高的产品。

我有一个包含许多价格表的产品表。

产品:编号

价格:id, product_id, value, change_date

这是一个例子。

Product: 1
  price: 11, change_date 12/1/2013, value: $10
  price: 12, change_date 11/1/2013, value: $15
Product: 2
  price: 21, change_date: 12/1/2013, value: $12
  price: 22, change_date: 11/1/2013, value: $10
Product: 3
  price: 31, change_date: 11/1/2013, value: $20

“当前”价格最高的产品是 3,而不是 2,而不是 1

我将如何在 MySQL 中执行此操作?

我尝试了以下操作,但值列与 max(change_date) 行关联的值不匹配。因此排序失败了。

SELECT id, product_id, price, max(change_date) 
FROM prices
GROUP BY product_id
ORDER BY value DESC
LIMIT 20

谢谢!

最佳答案

SELECT id, product_id, value, change_date
FROM prices
JOIN (SELECT product_id, MAX(change_date) AS recent_date
      FROM prices
      GROUP BY product_id) AS most_recent
  ON prices.product_id = most_recent.product_id
    AND prices.change_date = most_recent.recent_date
ORDER BY value DESC
LIMIT 20;

关于Mysql获取当前最高价商品,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20556814/

相关文章:

mysql - 检索每组中的最后一条记录 - MySQL

php - 在 laravel 中创建带有额外列的数据透视迁移

mysql - 获取今天之前的所有行

mysql - SQL 仅选择列上具有最大值的行

mysql - SQL仅选择列上具有最大值的行

mysql - LEFT JOIN 仅第一行

php - 打开电子邮件跟踪而不更新它两次

mysql - 如何在MySql中创建多级索引以及如何找出列是否被多级索引?

php - 如果不存在不同的结果,则插入到表中

mysql - 对有序子查询中的第一个结果进行分组