mysql - 在 MySQL 中,我如何通过不同的列和公用键按日期获取最新记录?

标签 mysql

我有一个类似这样的数据集:

id   product_id   size       color     price   created_date
------------------------------------------------------------------
1    24           small      black     9.99    2012-06-21 00:00:00
2    24           small      red       9.99    2012-06-23 00:00:00
3    24           medium     black     11.99   2012-06-24 00:00:00
4    24           medium     red       11.99   2012-06-24 00:00:00
5    24           large      black     12.99   2012-06-25 00:00:00
6    24           large      red       12.99   2012-06-26 00:00:00
7    24           small      black     8.99    2012-06-27 00:00:00
8    24           medium     black     10.99   2012-06-29 00:00:00
9    24           large      red       13.99   2012-06-30 00:00:00
10   24           medium     red       10.99   2012-07-01 00:00:00

我预期的结果集是:

id   product_id   size       color     price   created_date
------------------------------------------------------------------
2    24           small      red       9.99    2012-06-23 00:00:00
5    24           large      black     12.99   2012-06-25 00:00:00
7    24           small      black     8.99    2012-06-27 00:00:00
8    24           medium     black     10.99   2012-06-29 00:00:00
9    24           large      red       13.99   2012-06-30 00:00:00
10   24           medium     red       10.99   2012-07-01 00:00:00

换句话说,从 product_id = 24 和 size/color 唯一的表中选择所有并且只返回 created_date 的最新条目。

我不确定解决此问题的最佳方法是什么。通过临时表子选择?内部联接?某种独特/独特的组合?我可能让这比它必须的更困难。

最佳答案

您需要获得 groupwise maximum :

SELECT   mytable.*
FROM     mytable NATURAL JOIN (
  SELECT   size, color, MAX(created_date) AS created_date
  FROM     mytable
  GROUP BY size, color
) AS t

查看 sqlfiddle .

关于mysql - 在 MySQL 中,我如何通过不同的列和公用键按日期获取最新记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11269444/

相关文章:

php - 在 Server 2012 上安装 WordPress 和 MySQL

MYSqli 更新最后一行

python - 如何在Python中为MySQL设置空值

mysql - 简单的 mysql join 执行时间太长

mysql - SQL - 选择>=和<=的所有行

php - 动态 PDO 查询 - 使用 AND/OR

php - MYSQL_NUM_ROWS期望参数1为资源

php - 从 MySQL (Codeigniter) 中选择时缺少 HTML 标记

php - 将数据库中的信息排序到表中

php - MySQL在PHP中插入错误